คลังเก็บรายเดือน: สิงหาคม 2007

รายการของเครกทำงานดีให้ฉัน

ลงกับการลงโฆษณาขายรถในเขตเบอร์เกน, NJ ในคืนวันอาทิตย์. ฉันได้รับการสอบถามผ่านทางอีเมล์หลายมิช้ามินาน และปิดการเจรจากับคนในคืนวันอังคาร.

เกือบจะดีเกินจริง …

MOSS ขั้นสูงค้นหาเอง — กรณีเรื่องในการค้นหาขั้นสูง XSLT

ฉันไม่ปรับเปลี่ยนการค้นหาขั้นสูง XSLT บ่อย, ดังนั้นจึงดูเหมือนว่าผมกำลังปีนเนินเขาขนาดเล็กทุกครั้ง.

นี่คือบทเรียนของฉันใหม่ล่าสุด: กรณีเรื่องเมื่ออ้างอิงคอลัมน์. ในการค้นหาขั้นสูงของฉัน, มีคอลัมน์ที่กำหนดไว้เช่นนี้:

<ราก xmlns:xsi="http://www.w3.org/ 2001/XMLSchema-อินสแตนซ์">
<
คอลัมน์>
<
คอลัมน์ ชื่อ="GafTrainingInvoiceNumber" />
<
คอลัมน์ ชื่อ="GafTrainingInvoiceLocation" />
<
คอลัมน์ ชื่อ="WorkId"/>
<
คอลัมน์ ชื่อ="อันดับ"/>
<
คอลัมน์ ชื่อ="ชื่อเรื่อง"/>
<
คอลัมน์ ชื่อ="ผู้เขียน"/>
<
คอลัมน์ ชื่อ="ขนาด"/>
<
คอลัมน์ ชื่อ="เส้นทาง"/>
<
คอลัมน์ ชื่อ="คำอธิบาย"/>
<
คอลัมน์ ชื่อ="เขียน"/>
<
คอลัมน์ ชื่อ="SiteName"/>
<
คอลัมน์ ชื่อ="CollapsingStatus"/>
<
คอลัมน์ ชื่อ="HitHighlightedSummary"/>
<
คอลัมน์ ชื่อ="HitHighlightedProperties"/>
<
คอลัมน์ ชื่อ="ContentClass"/>
<
คอลัมน์ ชื่อ="IsDocument"/>
<
คอลัมน์ ชื่อ="PictureThumbnailURL"/>
</
คอลัมน์>
</
ราก>

XLST ที่แสดงที่ตั้งหมายเลขและใบแจ้งหนี้ใบแจ้งหนี้ได้:

<p>
หมายเลขอินวอยซ์ของการฝึกอบรม: <xsl:ค่าของ เลือก="GafTrainingInvoiceNumber"/>
<
br></br>
สถานฝึกอบรมใบแจ้งหนี้: <xsl:ค่าของ เลือก="GafTrainingInvoiceLocation"/>
</
p>

อย่างไรก็ตาม, เลือกมีการอ้างอิงคุณสมบัติในทุกกรณี, เช่นใน:

<p>
หมายเลขอินวอยซ์ของการฝึกอบรม: <xsl:ค่าของ เลือก="gaftraininginvoicenumber"/>
<
br></br>
สถานฝึกอบรมใบแจ้งหนี้: <xsl:ค่าของ เลือก="gaftraininginvoicelocation"/>
</
p>


จนกว่าฉันแก้ไขที่, ผลการค้นหาพบป้ายชื่อ (อาทิ. "การฝึกอบรมหมายเลข") แต่ไม่มีข้อมูล.

มอส: ตัวอย่างหน้าที่ – ชนิดข้อมูลที่กำหนดเอง

สถานการณ์ของธุรกิจ:

งานทั่วทั้งองค์กรของมอสสำหรับบริษัทผู้ผลิตด้วย 30+ ไซต์และแผนกของบริษัทกี่โหล.

วัตถุประสงค์ทางธุรกิจ:

แม้ มีความหลากหลายของกลุ่มธุรกิจ (แผนก, สถานที่เก็บ, ฯลฯ), ควรเก็บข้อมูลในระดับสากล. ตัวอย่าง, รายการหลักเชื่อถือของตำแหน่งทางกายภาพทั้งหมดของบริษัท (เช่น. ผลิตสิ่งอำนวยความสะดวก, ที่ตั้งคลังสินค้า, สำนักงานขาย) ควรเก็บในสถานที่กลาง.

ปัญหาทางเทคนิค:

ระบบองค์กรที่ดำเนินการโดยใช้หลายเว็บไซต์. เราจะชอบสร้างรายการไทม์ที่ตั้งทางกายภาพใน WSS รายการกำหนดเอง. แล้ว, เมื่อเราต้องมีคอลัมน์ในชนิดเนื้อหา (หรือเพิ่มคอลัมน์ในไลบรารีเอกสารหรือรายการ) ที่อยู่ที่ตั้งบริษัท, เราจะสร้างคอลัมน์โดยใช้การค้นหา"" ชนิดข้อมูลและชี้ไปยังรายการหลัก.

แต่น่าเสียดาย, ชนิดข้อมูลการค้นหาต้องเข้าถึงแหล่งที่มารายการ "ท้อง" หมายความ ว่า รายการของเราเชื่อถือไม่สามารถขยายไซต์คอลเลกชัน.

ด้านเทคนิค:

ใช้ชนิดข้อมูลที่กำหนดเองใหม่ดำเนินการตาม SPField และแสดงเป็น DropDownList ใน UI ListItems สร้างจากรายการ WSS หลัก.

เราได้สร้างชุดของไซต์ใหม่เรียกว่า "http://localhost/EnterpriseData". มี, เราสร้างรายการแบบกำหนดเองที่ชื่อ "ที่ตั้งขององค์กร". รายการนี้ใช้เพียงชื่อมาตรฐาน "เรื่อง" ฟิลด์จะประกอบด้วยรายการของที่ตั้งของบริษัทจริง.

หนึ่งดังต่อไปนี้ไม่ต่อเนื่องหลายขั้นตอนเพื่อสร้างชนิดข้อมูลที่กำหนดเองใน WSS. พวกเขาจะ:

  1. กำหนดคลาสซึ่งสืบทอดมาจาก SPField (หนึ่งอาจมาจากฟิลด์อื่น ๆ ถ้าจำเป็น).

นี่คือรหัสที่:

สาธารณะ คลาส XYZZYCorporateLocationField : SPFieldText
{
สาธารณะ XYZZYCorporateLocationField
(SPFieldCollection เขตข้อมูล, สายอักขระ typeName, สายอักขระ displayName)
: ฐาน(เขตข้อมูล, typeName, displayName) { }

สาธารณะ XYZZYCorporateLocationField
(SPFieldCollection เขตข้อมูล, สายอักขระ displayName)
: ฐาน(เขตข้อมูล, displayName) { }

สาธารณะ การแทน BaseFieldControl FieldRenderingControl
{
รับ
{
BaseFieldControl การควบคุม = ใหม่ XYZZYCorporateLocationFieldControl();
ควบคุม ชื่อเขตข้อมูล = นี้.InternalName;
เที่ยวกลับ ควบคุม;
} //รับ
} // fieldrenderingcontrol

สาธารณะ การแทน สายอักขระ GetValidatedString(วัตถุ ค่า)
{
ถ้า (นี้.ต้องระบุ || ค่า ToString().เท่ากับ(สายอักขระ.ว่างเปล่า))
{
โยน ใหม่ SPFieldValidationException ("กรมไม่กำหนดให้");
}
เที่ยวกลับ ฐาน.GetValidatedString(ค่า);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. กำหนดคลาสอื่นที่สืบทอดมาจากตัวควบคุมเขตข้อมูลพื้นฐาน, เช่นใน:

สาธารณะ คลาส XYZZYCorporateLocationFieldControl : BaseFieldControl
{
ได้รับการป้องกัน DropDownList XYZZYCorporateLocationSelector;

ได้รับการป้องกัน การแทน สายอักขระ DefaultTemplateName
{
รับ
{
เที่ยวกลับ "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

สาธารณะ การแทน วัตถุ ค่า
{
รับ
{
EnsureChildControls();
เที่ยวกลับ นี้.XYZZYCorporateLocationSelector SelectedValue;
} // รับ
ชุด
{
EnsureChildControls();
นี้.XYZZYCorporateLocationSelector.SelectedValue = (สายอักขระ)นี้.ItemFieldValue;
} // ชุด
} // แทนวัตถุค่า

ได้รับการป้องกัน การแทน โมฆะ CreateChildControls()
{

ถ้า (นี้.ฟิลด์== null || นี้.ControlMode == SPControlMode.จอแสดงผล)
เที่ยวกลับ;

ฐาน.CreateChildControls();

นี้.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer FindControl("XYZZYCorporateLocationSelector");

ถ้า (นี้.XYZZYCorporateLocationSelector == null)
โยน ใหม่ ข้อยกเว้น("ข้อผิดพลาด: ไม่สามารถโหลด ASCX แฟ้ม!");

ถ้า (!นี้.หน้า IsPostBack)
{

โดยใช้ (SPSite ไซต์ = ใหม่ SPSite("http://localhost/enterprisedata"))
{
โดยใช้ (SPWeb เว็บไซต์ = OpenWeb())
{

Splist.update() currentList =เว็บ รายการ["ตำแหน่งขององค์กร"];

foreach (SPItem XYZZYCorporateLocation ใน currentList.Items)
{
ถ้า (XYZZYCorporateLocation[ชื่อเรื่อง""] == null) « « «;

สายอักขระ theTitle;
theTitle = XYZZYCorporateLocation[ชื่อเรื่อง""].ToString();

นี้.XYZZYCorporateLocationSelector.Items.Add
(ใหม่ ListItem(theTitle, theTitle));

} // foreach

} // ใช้เว็บ spweb = site.openweb()
} // ใช้ spsite ไซต์ = spsite ใหม่("http://localhost/enterprisedata")

} // ถ้า ไม่มีการ postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

รหัสข้างต้นใช้ตรรกะสำหรับกำลังเติมข้อมูล DropDownList มีค่าจากรายการแบบกำหนดเอง WSS อยู่โดยทั่วไป http://localhost/enterprisedata และชื่อ "แผนกขององค์กร".

ฉันกำหนดชั้นเรียนทั้งในไฟล์เดียว.cs, คอมไพล์มัน และใส่ลงใน GAC การ (ต้องแข็งแรง, แน่นอน).

  1. ใช้แม่แบบตัวควบคุม (.ascx) ดังที่แสดง:

<%@ ควบคุม ภาษา= "C#" สืบทอด="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,รุ่น = 12.0.0.0 วัฒนธรรม =เป็นกลาง,PublicKeyToken = 71e9bce111e9429c" compilationMode= "เสมอ" %>
<%
@ การลงทะเบียน Tagprefix= "wssawc" Namespace="Microsoft.SharePoint.WebControls" แอสเซมบลี="Microsoft.SharePoint, รุ่น = 12.0.0.0, วัฒนธรรม =เป็นกลาง, PublicKeyToken = 71e9bce111e9429c" %> <%@ การลงทะเบียน Tagprefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" แอสเซมบลี="Microsoft.SharePoint, รุ่น = 12.0.0.0, วัฒนธรรม =เป็นกลาง, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID= "XYZZYCorporateLocationFieldControl" runat= "เซิร์ฟเวอร์">
<แม่แบบ>
<asp:DropDownList ID= "XYZZYCorporateLocationSelector" runat= "เซิร์ฟเวอร์" />
</แม่แบบ>
</
SharePoint:RenderingTemplate>

ดังกล่าวจะถูกบันทึกเป็น c:\โปรแกรม filescommon filesmicrosoft sharedweb เซิร์ฟเวอร์ extensions12controltemplates.

  1. ขั้นตอนสุดท้าย, เราสร้างแฟ้ม XML ที่จะบันทึกลงใน... 12XML ไดเรกทอรี. นี่คือ CAML ที่กำหนดชนิดของข้อมูลที่กำหนดเองและตัวของฉัน, ลักษณะเช่นนี้:

<?xml เวอร์ชัน="1.0" การเข้ารหัส="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
ฟิลด์ ชื่อ="TypeName">CorporateLocations</ฟิลด์>
<
ฟิลด์ ชื่อ="ParentType">ข้อความ</ฟิลด์>
<
ฟิลด์ ชื่อ="TypeDisplayName">ที่ตั้งบริษัท</ฟิลด์>
<
ฟิลด์ ชื่อ="TypeShortDescription">ตำแหน่ง XYZZY องค์กรทั้งหมดรวมทั้งสิ่งอำนวยความสะดวกในการผลิต หรืออื่น ๆ.</ฟิลด์>
<
ฟิลด์ ชื่อ="UserCreatable">อย่างแท้จริง</ฟิลด์>
<
ฟิลด์ ชื่อ="ShowInListCreate">อย่างแท้จริง</ฟิลด์>
<
ฟิลด์ ชื่อ="ShowInDocumentLibraryCreate">อย่างแท้จริง</ฟิลด์>
<
ฟิลด์ ชื่อ="ShowInSurveyCreate">อย่างแท้จริง</ฟิลด์>
<
ฟิลด์ ชื่อ="ShowInColumnTemplateCreate">อย่างแท้จริง</ฟิลด์>
<
ฟิลด์ ชื่อ="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, รุ่น = 1.0.0.0, วัฒนธรรม =เป็นกลาง, PublicKeyToken = b0b19e85410990c4</ฟิลด์>
<
RenderPattern ชื่อ="DisplayPattern">
<
สวิตช์>
<
Expr>
<
คอลัมน์ />
</
Expr>

<กรณี ค่า=""/>

<ค่าเริ่มต้น>
<
HTML>
<![CDATA[
<ครอบคลุมลักษณะ = "สี:สีแดง"><b>]]>
</
HTML>

<
คอลัมน์ SubColumnNumber="0" HTMLEncode="อย่างแท้จริง"/>

<HTML><![CDATA[</b></ขยาย>]]></HTML>

</
ค่าเริ่มต้น>
</
สวิตช์>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
แฟ้ม XML นี้เพิ่มชนิดข้อมูลที่กำหนดเอง WSS "ไลบรารี" ตรงนี้ขึ้นกับการ GAC มีแอสเซมบลี.

หลังจากย้ายบิตเหล่านี้เป็นสถานที่, iisreset บนเซิร์ฟเวอร์และควรเริ่มต้นทั้งหมดที่ทำงานดี.

WSS: เทคนิคการสร้างข้อกำหนดเขตข้อมูล CAML.

ประเภทเพิ่มเติม: CAML

ที่นี่ มีการลงรายการบัญชีที่ดี โดยเพื่อนชื่อ "เครก" ในเทคนิคในการค้นหาข้อกำหนด CAML สำหรับฟิลด์ชนิดเนื้อหาที่ใช้ออกข้อกำหนดของสดจริงจากไซต์.

ลงเขากล่าวมันทั้งหมด. สังเขป:

  1. สร้างชนิดเนื้อหา.
  2. เชื่อมโยงกับรายการ.
  3. เปิดรายการด้วย SharePoint Designer.
  4. ส่งออกไปยัง "ส่วนบุคคลเว็บแพคเกจ".
  5. เปลี่ยนชื่อไปเป็น.cab.
  6. แยกรายการ.
  7. ชนิดเนื้อหาของคุณและ CAML ที่เกี่ยวข้อง.

WSS: สรุปขั้นตอนการเปิดใช้ประโยชน์ลักษณะ/องค์ประกอบ/ฯลฯ. Intellisense ใน VS 2005

ประเภทเพิ่มเติม: Visual Studio 2005

ให้ประโยชน์ intellisense สำหรับคุณลักษณะ, องค์ประกอบ, ฯลฯ ในภาพสตูดิโอ 2005:

  1. การเข้าถึงเซิร์ฟเวอร์ WSS.
  2. ไปที่ "c:\โปรแกรม filescommon filesmicrosoft sharedweb เซิร์ฟเวอร์ extensions12TEMPLATEXML"
  3. เปิด windows explorer อื่นที่ชี้ไป: "C:\โปรแกรม FilesMicrosoft Visual Studio 8XmlSchemas"
  4. คัดลอกแฟ้มต่อไปนี้จากเซิร์ฟเวอร์ WSS ไปเทียบกับของคุณ 2005 ไดเรกทอรีแบบแผน:
    1. Wss.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. เริ่ม VS 2005
  6. เพิ่มแฟ้ม XML ใหม่กับโครงการ.
  7. คลิกในเนื้อหาของแฟ้ม XML.
  8. ในบานหน้าต่างคุณสมบัติ, คลิกที่ "แบบแผน" และเลือก "wss.xsd" จากตัวเลือก. (ไม่จำเป็นต้องเลือกของ xsd อื่น ๆ เนื่องจากพวกเขาถูกอ้างอิงจาก wss.xsd).

ขณะนี้มีการเปิดใช้งาน Intellisense สำหรับเอกสาร XML นั้น.

ดู ที่นี่ สำหรับข้อมูลเพิ่มเติม ในเรื่องนี้ และ สำหรับคำแนะนำเกี่ยวกับวิธีการเชื่อมโยง WSS intellisense กับแฟ้ม XML ใด ๆ โดยอัตโนมัติ.

สอบ WSS 70-541, Microsoft Windows SharePoint Services 3.0 – การพัฒนาโปรแกรมประยุกต์

ผมใช้เวลา และผ่านการทดสอบดังกล่าวข้างต้นนี้. พบสอบยาก และยุติธรรม.

มีการขาดแคลนข้อมูลนี้สอบบนเว็บแบบย่อ. ผมไม่แน่ใจว่าทำไม.

ได้แน่นอนจะไม่รับลงในรายละเอียดใด ๆ เกี่ยวกับการสอบที่ผมเอา, แต่ฉันคิดว่า ฉันสามารถพูดได้อย่างปลอดภัยต่อไปนี้:

  1. เชื่อถือการเชื่อมโยงนี้: http://www.microsoft.com/learning/exams/70-541.mspx.

    แสดงรายการสิ่งที่คุณต้องรู้ผ่านการสอบและ, IMO, ถูกต้องมาก.

  2. การเชื่อมโยงยังแนะนำให้ ภายใน Microsoft Windows SharePoint Services 3.0 โดย Ted Pattison & Daniel Larson. หนังสือเล่มนี้ครอบคลุมเกือบทุกหัวข้อการทดสอบอยู่. พบให้ดีใน และ ของตัวเองนอกเหนือจากการเตรียมสอบอย่าง. แสดงตัวอย่างที่ดี และจริง ๆ มีฉันคิดเกี่ยวกับสิ่งใหม่ และน่าสนใจจะลอง. ถ้าคุณต้องการข้ามกี่บิตในสมุด, เพียงอ้างอิงโยงสารบัญของหนังสือกับสินค้าในการเชื่อมโยงจากข้างต้น.
  3. ไม่มีอะไรเต้นจริงเพื่อเสริมสร้างประสบการณ์. ถ้าคุณมีเวลาและความสนใจ, ทำตามพร้อมกับตัวอย่างในหนังสือ และทดลองแล้ว กับพวกเขา. คุณจะมีเวลาง่ายในการสอบ ตลอดจนเรียนรู้ WSS แอพลิเคชันเขียนโปรแกรมจริง ๆ.

</สิ้นสุด>สมัครสมาชิกไปยังบล็อกของฉัน!

มอส / InfoPath Forms Server (InfoPath 2007) ประสิทธิภาพการทำงานรายการหล่นลง

ประเภทเพิ่มเติม: InfoPath

สรุป: มี InfoPath 2007 ฟอร์มจัดวางเซิร์ฟเวอร์ MOSS แสดงรายการแบบหล่นลงของผู้ขายที่เชื่อมโยงกับรายการมอสเอง. เมื่อเลือกผู้จัดจำหน่าย, กฎกำหนดค่าฟิลด์ที่กำมือของเขตข้อมูลข้อความเช่นชื่อพนักงานขาย, ที่อยู่, เมือง, รัฐ, ไปรษณีย์และโทรศัพท์. ประสิทธิภาพเป็นน่ากลัว. เราสังเกตว่า ประสิทธิภาพลม (แฟชั่นไม่ใช่เชิงเส้น) สำหรับแต่ละฟิลด์เพิ่มเติม เราปรับปรุงด้วยวิธีนี้. เช่น, ถ้าเราเพียง ปรับปรุงชื่อตัวแทนขาย, มันต้องใช้เวลา [x] จำนวนเวลา. ถ้าเราปรับปรุงตัวแทนขาย, address1, address2, เมือง, รัฐ, ไปรษณีย์, มันต้องใช้เวลา 10 เวลาอีกต่อไป.

โซลูชั่น: เขียนเว็บเซอร์วิส (สามารถพบรหัสตัวอย่าง ที่นี่) ที่ถูกส่งผ่านชื่อของผู้จัดจำหน่าย และคืนกลับรายละเอียดผู้จัดจำหน่าย. แล้ว, กำหนดฟิลด์วิธีนี้. แม้ว่าดูเหมือนเกินไปนี้ ช้า, มีความแตกต่างไม่ discernable ประสิทธิภาพเมื่อเรากำหนดให้ 1 ฟิลด์เมื่อเทียบกับ 8 เขตข้อมูล. เป็นโบนัส, ผู้ใช้ได้รับเย็น "ติดต่อเซิร์ฟเวอร์" Cylon ผลผลในขณะที่พวกเขารอแบบฟอร์ม การเรียกใช้บริการ.

มอส: เกิดข้อยกเว้น. (ข้อยกเว้นจาก hresult ใน: 0x 80020009 (DISP_E_EXCEPTION))

โปรแกรมปรับปรุง: เราไม่เคยพิจารณาสาเหตุหลักของปัญหานี้และมันไม่เคยผิวอีกครั้ง.

เราสังเกตเห็นในระหว่างการดำเนินการพัฒนาเว็บไซต์นั้นทันที, มีผู้ใช้สองคนสามารถเข้าถึงไซต์คอลเลกชัน. บัญชีผู้ใช้เหล่านั้นสามารถรับรองความถูกต้องไปยังไซต์หลัก, แต่ เมื่อพยายามเข้าถึงคอลเลกชันของไซต์ที่เฉพาะเจาะจง, พวกเขาเพิ่งได้รับหน้าจอว่าง. ไม่มีข้อผิดพลาดที่แสดงอยู่, เพียงแค่สีขาวหน้าเปล่า.

เราเข้าสู่ระบบในฐานะ admin เป็นคอลเลกชันของไซต์ และพยายามเพิ่มผู้ใช้เหล่านั้นอย่างใดอย่างหนึ่งเป็น admin ของเว็บไซต์และในเวลานี้, เมื่อกด "OK", เราได้รับข้อความนี้:

เกิดข้อยกเว้น. (ข้อยกเว้นจาก hresult ใน: 0x 80020009 (DISP_E_EXCEPTION))

เราใช้เวลาบางครั้งที่ทำการวิจัยนี้ และขออภัย, ไม่ได้มากับสิ่งที่มีประโยชน์. มีบางข้อความในแฟ้มบันทึกการวินิจฉัย, แต่มันยากตรงสัมพันธ์กับปัญหานี้.

ในสุด, เราลบไซต์คอลเลกชัน และถูกสร้างขึ้นใหม่ได้และการที่แก้ไขได้.

ถ้าฉันสามารถหา สิ่งที่เกิดนี้ในอนาคต, จะปรับปรุงการลงรายการบัญชีนี้.