वर्ग पुरालेख: SharePoint विकास

परिवर्तन करने के लिए ItemStyle.xsl तोड़ने के खबरदार

मैं एक सामग्री क्वेरी वेब पार्ट और दोपहर के भोजन के समय के बारे में सही के देखो अनुकूलित करने के लिए ItemStyle.xsl के साथ काम कर रहा था, मैं एक तोड़ने के लिए xsl को बदलने की. मैं यह महसूस किया था, लेकिन इस साइट संग्रह भर में प्रभाव तक पहुँचने था. मैं दोपहर के भोजन के लिए और मेरे लौटने पर दूर चला गया, इस संदेश में स्थानों का एक गुच्छा दिखने देखा:

यह वेब पार्ट प्रदर्शित करने में असमर्थ. समस्या के निवारण के लिए, इस वेब पेज किसी Windows SharePoint सेवाएँ-संगत HTML संपादक जैसे Microsoft Office SharePoint डिज़ाइनर में खोलें. यदि समस्या बनी रहती है, आपके वेब सर्वर व्यवस्थापक से संपर्क करें.

मैं ग्राहक को दोषी ठहराया (अभी तक कि यह मेरी गलती थी इस बिंदु पर नहीं साकार) लेकिन अंततः देखा उस दृश्य स्टूडियो intellisense मुझे था कि मैं विकृत XSL चेतावनी थी. मैं इसे सही और सब कुछ काम करना शुरू कर दिया.

रफ़ू किया हुआ ItemStyle.xsl के साथ कार्य करते समय सावधान रहें (और वैश्विक XSL फ़ाइलों के किसी भी) — उन्हें तोड़ने को साइट संग्रह में कई कलाकृतियों को प्रभावित करता है.

<अंत />

सामग्री क्वेरी वेब पार्ट परिणाम प्रदर्शित ग्रिड में / तालिका

अवलोकन और उद्देश्य

बॉक्स से बाहर, काई’ सामग्री क्वेरी वेब भाग (CQWP) इसका परिणाम एक सूची स्वरूप में प्रदर्शित करता है, खोज परिणामों के समान. यह भी एक ग्रिड स्वरूप में परिणाम प्रदर्शित करने के लिए संभव है (अर्थात. HTML तालिका स्वरूप). ग्रिड स्वरूप में कुछ हालात बेहतर होते हैं. मैं इस लेख में उस प्रभाव को प्राप्त करने के लिए कैसे का वर्णन.

व्यापार परिदृश्य

मैं एक उद्यम-व्यापी काई rollout पर एक ग्राहक के साथ काम किया है. हम उनके वर्गीकरण बनाया गया है ऐसी है कि परियोजनाओं के पदानुक्रम में प्रथम श्रेणी के नागरिक हैं और उनके अपने शीर्ष स्तर साइट है. परियोजना प्रबंधकों परियोजना सारांश जानकारी का एक सिंगलटन सूची को बनाए रखने, ऐसे शीर्षक, बजट, पूरा होने के उम्मीद की तारीख, शेष बजट और अन्य सारांश प्रकार के फ़ील्ड् स. द्वारा "सिंगलटन" मेरा मतलब है एक कस्टम SharePoint सूची केवल एक आइटम होते हैं की गारंटी. Simplistically, यह इस तरह दिखता है:

छवि

तकनीकी दृष्टिकोण बहुत ही के रूप में वर्णित है यहाँ (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP रेंडर करने के लिए HTML ब्राउज़र के लिए फेंकना करने के लिए कोई XSL ट्रांस्फ़ॉर्म का उपयोग करता है.

मैं हमेशा XSL में गोताखोरी से पहले क्योंकि XSL एक दुःस्वप्न है नतीजा कल्पना. यहाँ है मेरे वांछित परिणाम:

छवि

HTML इस तरह उस परिणाम उत्पन्न करता है:

<html>
 <शरीर>
 <केंद्र>
 <तालिका बॉर्डर= 1>

<!-- लेबल->
 <टी. आर. bgcolorब्लू =>
 <td><फ़ॉन्ट रंग/ / u003d व्हाइट><>प्रोजेक्ट का नाम</></फ़ॉन्ट></td>
 <td संरेखित करेंसही =><फ़ॉन्ट रंग/ / u003d व्हाइट><>पूर्ण दिनांक</></फ़ॉन्ट></td>
 <td संरेखित करेंसही =><फ़ॉन्ट रंग/ / u003d व्हाइट><>बजट</></फ़ॉन्ट></td>
 <td संरेखित करेंसही =><फ़ॉन्ट रंग/ / u003d व्हाइट><>वास्तविक व्यय</></फ़ॉन्ट></td>
 <td><फ़ॉन्ट रंग/ / u003d व्हाइट><>समग्र स्थिति</></फ़ॉन्ट></td>
 </टी. आर.>

<टी. आर.>
 <td>कम्प्यूटर कक्ष पुनः वायर.</td>
 <td संरेखित करेंसही =>02/01/08</td>
 <td संरेखित करेंसही =>22,500.00</td>
 <td संरेखित करेंसही =>19,000.00</td>
 <td>प्रगति में</td>
 </टी. आर.>

<टी. आर.>
 <td>प्रावधान के लिए नवीनीकरण SQL सर्वर</td>
 <td संरेखित करेंसही =>04/01/08</td>
 <td संरेखित करेंसही =>7,500.00</td>
 <td संरेखित करेंसही =>0.00</td>
 <td>की योजना बनाई</td>
 </टी. आर.>

</तालिका>
 </केंद्र>
 </शरीर>
</html>

दृष्टिकोण

ग्रिड बनाने के लिए इन चरणों का पालन करें:

  1. ग्रिड के घटकों की पहचान (पंक्तियाँ/स्तंभ).
  2. परिभाषित करें और आवश्यक साइट स्तंभ बनाना.
  3. उप साइटें परियोजनाओं और सिंगलटन सूचियों के लिए बनाएँ.
  4. CQWP एक वेब पेज को जोड़ने और यह आपकी सूचियों के लिए खोज करने के लिए कॉन्फ़िगर करें.
  5. CQWP XML ऊपर अतिरिक्त स्तंभों को इकट्ठा करने के लिए संशोधित करें.
  6. XSL एक मेज उत्पन्न करने के लिए संशोधित करें.

मैं नंबर छह पर ध्यान केंद्रित करने जा रहा हूँ. सीधे आगे और कुछ है कि किसी भी CQWP उपयोगकर्ता पहले से ही किया है चार के माध्यम से एक नंबर रहे हैं. संख्या पाँच MSDN से इस संपूर्ण स्क्रीन-शॉट लादेन लेख सहित अन्य लोगों द्वारा अच्छी तरह से प्रलेखित किया गया है यहाँ (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) और हीदर सुलैमान ब्लॉग यहाँ (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

नट और बोल्ट

आरंभ और MSDN प्रलेखन और हीदर सुलैमान के लेख के अनुसार पांच के माध्यम से एक कदम को लागू.

इस बिंदु पर, आप अपने CQWP पेज को जोड़ दिया है और आपके पास अपने <CommonViewFields> के रूप में आवश्यक कॉन्फ़िगर किया गया.

सामान्य चरणों का पालन, मैं इन मध्यवर्ती परिणाम प्राप्त:

1. कोई सामग्री प्रकार बनाना, एक templatized कस्टम सूची सामग्री प्रकार और दो साइटों के लिए. यहाँ सामग्री प्रकार है:

छवि

यहाँ साइट संरचना है:

छवि

2. मेरी परियोजना सबसाइट्स और सिंगलटन परियोजना सारांश सूचियाँ बनाने के बाद CQWP में जोड़ें:

छवि

3. मैं चाहता हूँ के माध्यम से सभी अतिरिक्त जानकारी जोड़ें <CommonViewFields>:

        <संपत्ति नाम="CommonViewFields" प्रकार="स्ट्रिंग">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</संपत्ति>

ध्यान दें कि सभी गुण फ़ील्ड एक लाइन या इसे पर रखने के लिए मैंने काम नहीं होता (CQWP मुझे बताना होगा कि क्वेरी कोई आइटम नहीं लौटा).

4. इस बिंदु पर, हम MSDN आलेख से परे ले जाने के लिए तैयार कर रहे हैं और पर पर पलटें हीदर सुलैमान के लेख के लिए. उसके चरणों के निकट चरण शुरू करने का पालन करें #5 एक अनुकूलित बनाने के लिए / ItemStyle.xsl का unghosted संस्करण. मैं हीथ की सलाह का पालन करें, ऊपर चरण के माध्यम से 11 और इन मध्यवर्ती परिणाम प्राप्त:

4.1: मेरी XSL टेम्पलेट निम्नानुसार ही नाम दें:

<xsl:टेम्पलेट का नाम = "ग्रिड" मैच "पंक्ति =[@Style 'ग्रिड' =]" मोड = "itemstyle">

मैं भी थोड़ा उसे सुझाव दिया संशोधित करें <xsl:के लिए प्रत्येक …> जोड़ने के द्वारा एक <br /> टैग एक क्लीनर लिस्टिंग प्रदान करने के लिए:

    <xsl:के लिए प्रत्येक का चयन करें="@*">
      पी:<xsl:मान का का चयन करें="नाम()" /><br/>
    </xsl:के लिए प्रत्येक>

4.2: मैं वेब पार्ट को संशोधित करें, उपस्थिति के लिए जाओ और मेरी "ग्रिड का चयन करें" शैली:

छवि

परिवर्तन लागू करें और यहाँ का परिणाम है:

छवि

हम से ऊपर क्षेत्रों हम चाहते हैं देख सकते हैं (प्रोजेक्ट का नाम, व्यय, स्थिति, आदि) हमारे लिए जब हम HTML का उत्सर्जन का उपयोग करने के लिए उपलब्ध हैं. इतना ही नहीं, लेकिन हम देखते हैं जिसके द्वारा हम XSL में उन स्तंभों का संदर्भ लेना चाहिए के नाम. उदाहरण के लिए, हम के रूप में "Project_x005F_x0020_Name" परियोजना की स्थिति का संदर्भ.

इस बिंदु पर, हम इन दिग्गजों के कंधों से और हीदर ब्लॉग से विदा, मैं मेरा अपना छोटा सा जोड़ें.

ContentQueryMain.xsl

नोट: जब परिवर्तन करने के साथ दोनों ContentQueryMain.xsl ही ItemStyle.xsl, आप की जरूरत है इससे पहले कि आप अपने परिवर्तनों के प्रभाव देखने में उन फ़ाइलों को वापस की जाँच करने के लिए.

ग्रिड बनाने के प्रयोजनों के लिए, काई हम देखते हैं एक CQWP से परिणाम का उत्पादन करने के लिए दो अलग अलग XSL फ़ाइलों का उपयोग करता है. आउटपुट का पिछला सा उत्पन्न करने के लिए, हम ItemStyle.xsl संशोधन. काई वास्तव में एक और XSL फ़ाइल का उपयोग करता है, अपने HTML जनरेट करने के लिए ItemStyle.xsl के साथ संयोजन के रूप में करने के लिए ContentQueryMain.xsl. जैसा कि इसके नाम का तात्पर्य, "मुख्य ContentQueryMain.xsl है" XSL कि अनुवाद के समग्र प्रवाह नियंत्रण. यह सब पाया आइटम के माध्यम से iterates और उन्हें टेम्पलेट् स के लिए एक से गुजरता है ItemStyle.xsl में. हम खुले उत्पन्न करने के लिए ItemStyle.xsl को संशोधित करेंगे <तालिका> टैग डेटा और समापन की पहली पंक्ति के प्रकाश का उत्सर्जन से पहले <तालिका> अंतिम पंक्ति उत्सर्जक के बाद टैग. यह पूरा करने के लिए, हमारे "ग्रिड के लिए दो मानकों से गुजारें को संशोधित किया गया है ContentQueryMain.xsl" ItemStyle.xsl में टेम्पलेट, "अंतिम पंक्ति" और "वर्तमान पंक्ति". ItemStyle.xsl ये सशर्त आवश्यक टैग फेंकना करने के लिए उपयोग करता है.

हीथ सोलोमन तकनीक का उपयोग करना, हम ContentQueryMain.xsl का पता लगाएँ. यह ItemStyle.xsl के रूप में एक ही स्थान में स्थित है. इस स्क्रीन शॉट में मदद चाहिए:

छवि

हम निम्नलिखित बदलाव करने की जरूरत:

  • कोई xsl टेम्पलेट संशोधित करें, "CallItemTemplate" कि वास्तव में ItemStyle.xsl में हमारे ग्रिड टेम्पलेट invokes. इतना है कि यह डेटा यह सशर्त उत्पन्न खोलने और बंद करने के लिए की जरूरत है होगा हम ग्रिड टेम्पलेट को दो पैरामीटर पारित करेगा <तालिका> टैग.
  • ContentQueryMain.xsl कि "CallItemTemplate कॉल का एक अन्य सा संशोधित करें" यह एक "LastRow पारित करने के लिए" तो उस LastRow हमारे ग्रिड टेम्पलेट के लिए पारित किया जा सकता पैरामीटर.

"OuterTemplate.CallItemTemplate नामक टेम्पलेट का पता लगाएँ" स्ट्रिंग द्वारा की पहचान की:

  <xsl:टेम्पलेट नाम="OuterTemplate.CallItemTemplate">

पूरे टेम्पलेट निम्नानुसार बदलें:

  <xsl:टेम्पलेट नाम="OuterTemplate.CallItemTemplate">
    <xsl:परम नाम="CurPosition" />

    <!--
      "LastRow में जोड़ें" पैरामीटर.
      आइटम शैली दर्रा में "ग्रिड" है जब हम केवल यह उपयोग करें.
    -->
    <xsl:परम नाम="LastRow" />

    <xsl:चुनें>
      <xsl:कब टेस्ट="@Style 'NewsRollUpItem' =">
        <xsl:लागू टेम्पलेट्स का चयन करें="." मोड="itemstyle">
          <xsl:परम के साथ नाम="EditMode" का चयन करें="$cbq_iseditmode" />
        </xsl:लागू टेम्पलेट्स>
      </xsl:कब>
      <xsl:कब टेस्ट="@Style 'NewsBigItem' =">
        <xsl:लागू टेम्पलेट्स का चयन करें="." मोड="itemstyle">
          <xsl:परम के साथ नाम="CurPos" का चयन करें="$CurPosition" />
        </xsl:लागू टेम्पलेट्स>
      </xsl:कब>
      <xsl:कब टेस्ट="@Style 'NewsCategoryItem' =">
        <xsl:लागू टेम्पलेट्स का चयन करें="." मोड="itemstyle">
          <xsl:परम के साथ नाम="CurPos" का चयन करें="$CurPosition" />
        </xsl:लागू टेम्पलेट्स>
      </xsl:कब>

      <!--
              ग्रिड itemstyle.xsl टेम्पलेट के लिए पारित की वर्तमान स्थिति, और lastrow.
              ItemStyle.xsl का उपयोग करेंगे कि खुले फेंकना करने के लिए और समापन <तालिका> टैग.
      -->
      <xsl:कब टेस्ट="@Style 'ग्रिड' =">
        <xsl:लागू टेम्पलेट्स का चयन करें="." मोड="itemstyle">
          <xsl:परम के साथ नाम="CurPos" का चयन करें="$CurPosition" />
          <xsl:परम के साथ नाम="अंतिम" का चयन करें="$LastRow" />
        </xsl:लागू टेम्पलेट्स>
      </xsl:कब>

      <xsl:अन्यथा>
        <xsl:लागू टेम्पलेट्स का चयन करें="." मोड="itemstyle">
        </xsl:लागू टेम्पलेट्स>
      </xsl:अन्यथा>
    </xsl:चुनें>
  </xsl:टेम्पलेट>

टिप्पणी परिवर्तन के उद्देश्य का वर्णन.

बेशक, "OuterTemplate.CallItemTemplate" ही किसी अन्य टेम्पलेट से कहा जाता है. इस पाठ स्ट्रिंग के लिए खोज के द्वारा उस टेम्पलेट का पता लगाएँ:

<xsl:टेम्पलेट नाम="OuterTemplate.Body">

OuterTemplate.Body में दिए गए निर्देशों के माध्यम से स्क्रॉल करें और LastRow पैरामीटर निम्नानुसार डालें (तिर्छा में किसी टिप्पणी के रूप में दिखाया गया):

<xsl:कॉल-टेम्पलेट नाम="OuterTemplate.CallItemTemplate">
  <xsl:परम के साथ नाम="CurPosition" का चयन करें="$CurPosition" />
  <!-- LastRow पैरामीटर सम्मिलित करें. -->
  <xsl:परम के साथ नाम="LastRow" का चयन करें="$LastRow"/>
</xsl:कॉल-टेम्पलेट>

इस सब के बाद, हम अंत में बातें इतना है कि हमारे ItemStyle.xsl का उत्सर्जन कर सकते हैं ठीक से सेट है <तालिका> सही जगह पर टैग.

ItemStyle.Xsl

नोट: फिर से, ItemStyle.xsl में इतनी है कि आप उन परिवर्तनों के प्रभाव को देख कोई भी परिवर्तन करने के बाद की जाँच करें.

हम यहाँ दो कार्य है:

  • पूरे ग्रिड टेम्पलेट बदलें. आप प्रतिलिपि/नीचे से पेस्ट कर सकते हैं.
  • "Formatcurrency में सक्षम बनाता है टेम्पलेट परिभाषा के बाहर कुछ mumbo जंबो जोड़ें" काम करने के लिए टेम्पलेट. (आप बता सकते हैं कि मैं XSL पर एक कमजोर हैंडल है).

प्रथम, शीर्ष ItemStyle.xsl के निकट, इस पंक्ति में जोड़ें:

  <!-- कुछ mumbo जंबो कि अमेरिका को प्रदर्शित करने के लिए हमें सक्षम बनाता है. मुद्रा. -->
  <xsl:दशमलव स्वरूप नाम="स्टाफ" अंक="" />

  <xsl:टेम्पलेट नाम="डिफ़ॉल्ट" मैच="*" मोड="itemstyle">

ध्यान दें कि मैं यह सीधे पहले जोड़ा गया <xsl:टेम्पलेट का नाम = "डिफ़ॉल्ट" …> परिभाषा.

अगले, करने के लिए हमारी ग्रिड टेम्पलेट पर वापस जाना. पूरे ग्रिड टेम्पलेट नीचे दिए गए कोड के साथ बदलें. यह अच्छी तरह से टिप्पणी की है, लेकिन मुझे ईमेल या मेरे ब्लॉग पर टिप्पणियाँ छोड़ यदि आपके कोई प्रश्न हैं करने में संकोच नहीं करते.

  <xsl:टेम्पलेट नाम="ग्रिड" मैच="पंक्ति[@Style 'ग्रिड' =]" मोड="itemstyle">

    <!--
      ContentMain.xsl CurPos और आखिरी गुजरता.
      हम इन सशर्त खुले फेंकना करने के लिए उपयोग करें और समापन <तालिका> टैग.
    -->
    <xsl:परम नाम="CurPos" />
    <xsl:परम नाम="अंतिम" />

    <!-- निम्न चर से मानक ItemStyle.xsl unmodified हैं -->
    <xsl:चर नाम="SafeImageUrl">
      <xsl:कॉल-टेम्पलेट नाम="OuterTemplate.GetSafeStaticUrl">
        <xsl:परम के साथ नाम="UrlColumnName" का चयन करें="'ImageUrl'"/>
      </xsl:कॉल-टेम्पलेट>
    </xsl:चर>
    <xsl:चर नाम="SafeLinkUrl">
      <xsl:कॉल-टेम्पलेट नाम="OuterTemplate.GetSafeLink">
        <xsl:परम के साथ नाम="UrlColumnName" का चयन करें="'LinkUrl'"/>
      </xsl:कॉल-टेम्पलेट>
    </xsl:चर>
    <xsl:चर नाम="DisplayTitle">
      <xsl:कॉल-टेम्पलेट नाम="OuterTemplate.GetTitle">
        <xsl:परम के साथ नाम="शीर्षक" का चयन करें="@Title"/>
        <xsl:परम के साथ नाम="UrlColumnName" का चयन करें="'LinkUrl'"/>
      </xsl:कॉल-टेम्पलेट>
    </xsl:चर>
    <xsl:चर नाम="LinkTarget">
      <xsl:अगर टेस्ट="@OpenInNewWindow = 'सच'" >_ blank</xsl:अगर>
    </xsl:चर>

    <!--
      यहाँ हम एक चर को परिभाषित, "tableStart".  यह होता है कि हम के रूप में अच्छी तरह से तालिका में स्तंभ लेबल के उद्घाटन को परिभाषित करने के लिए उपयोग HTML.  ध्यान दें कि यदि CurPos = 1, यह भी शामिल है में एक CDATA टैग HTML.
      अन्यथा, यह खाली हो जाएगा.

      हर बार जब ItemStyle ContentQueryMain.xsl के द्वारा कहा जाता है tableStart का मान emited है.
    -->
    <xsl:चर नाम="tableStart">
      <xsl:अगर टेस्ट="$CurPos = 1">
        <![CDATA[
        <तालिका बॉर्डर = 1>
          <tr bgcolor = "ब्लू">
            <td><फ़ॉन्ट रंग "व्हाइट" =><ख>प्रोजेक्ट का नाम</ख></फ़ॉन्ट></td>
            <टीडी संरेखित करें = "सही"><फ़ॉन्ट रंग "व्हाइट" =><ख>पूर्ण दिनांक</ख></फ़ॉन्ट></td>
            <टीडी संरेखित करें = "सही"><फ़ॉन्ट रंग "व्हाइट" =><ख>बजट</ख></फ़ॉन्ट></td>
            <टीडी संरेखित करें = "सही"><फ़ॉन्ट रंग "व्हाइट" =><ख>वास्तविक व्यय</ख></फ़ॉन्ट></td>
            <td><फ़ॉन्ट रंग "व्हाइट" =><ख>समग्र स्थिति</ख></फ़ॉन्ट></td>
          </टी. आर.>
        ]]>
      </xsl:अगर>
    </xsl:चर>

    <!--
      एक और चर, tableEnd बस को परिभाषित करता है समापन टेबल टैग.

      TableStart साथ के रूप में, यह हमेशा emited है.  यही कारण है इसकी कीमत सशर्त चाहे हम अंतिम पंक्ति ContentQueryMain.xsl द्वारा पारित किया गया है पर आधारित सौंपा है.
    -->
    <xsl:चर नाम="tableEnd">
      <xsl:अगर टेस्ट="$CurPos = $Last">
        <![CDATA[ </तालिका> ]]>
      </xsl:अगर>
    </xsl:चर>

    <!--
      हमेशा tableStart की सामग्री का उत्सर्जन.  यदि यह पहली पंक्ति हमारे लिए ContentQueryMain.xsl द्वारा पारित नहीं है, तो हम जानते हैं कि इसका मान रिक्त हो जाएगा.

      आउटपुट से बचने क्योंकि अक्षम करें जब tableStart इसे खाली नहीं, यह भी शामिल है कि हम ब्राउज़र के द्वारा रेंडर किया जा करने के लिए चाहते हैं वास्तविक HTML.  यदि हम बता नहीं अक्षम करने के लिए XSL पार्सर उत्पादन से बचने, यह सामान की तरह उत्पन्न होगा"&लेफ्टिनेंट;तालिका&जी. टी.;" के बजाय"<तालिका>".
    -->
    <xsl:मान का का चयन करें="$tableStart" अक्षम करें आउटपुट बचने="हाँ"/>


    <टी. आर.>
      <!--
      पी:Project_x005F_x0020_Name P:Project_x005F_x0020_End_x005F_x0020_Date P:Project_x005F_x0020_Budget P:Project_x005F_x0020_Expenses P:Project_x005F_x0020_Status
      -->
      <td>
        <xsl:मान का का चयन करें="@Project_x005F_x0020_Name"/>
      </td>

      <td संरेखित करें="दाईं ओर">
        <xsl:मान का का चयन करें="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </td>

      <td संरेखित करें="दाईं ओर">
        <xsl:कॉल-टेम्पलेट नाम="formatcurrency">
          <xsl:परम के साथ नाम="मान" 
का चयन करें="@Project_x005F_x0020_Budget"></xsl:परम के साथ> </xsl:कॉल-टेम्पलेट> </td> <td संरेखित करें="दाईं ओर"> <xsl:कॉल-टेम्पलेट नाम="formatcurrency"> <xsl:परम के साथ नाम="मान" का चयन करें="@Project_x005F_x0020_Expenses">
</xsl:परम के साथ> </xsl:कॉल-टेम्पलेट> </td> <td> <xsl:मान का का चयन करें="@Project_x005F_x0020_Status"/> </td> <!-- निम्न सभी टिप्पणी है बाहर बातों को स्पष्ट करने के लिए. हालांकि, इसे वापस लाने के लिए और में यह सामान एक <td> उसके प्रभाव को देखने के लिए. --> <!-- <div id = "linkitem" वर्ग = "" आइटम> <xsl:यदि परीक्षण "स्ट्रिंग लंबाई =($SafeImageUrl) != 0"> <div कक्षा "छवि-क्षेत्र-बाएँ" => <एक href = "{$SafeLinkUrl}" लक्ष्य = "{$LinkTarget}"> <आइएमजी कक्षा "छवि-निश्चित-चौड़ाई =" src = "{$SafeImageUrl}"
alt = "{@ImageUrlAltText}"/> </एक> </div> </xsl:अगर> <div वर्ग = "लिंक-आइटम"> <xsl:कॉल-टेम्पलेट
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <एक href = "{$SafeLinkUrl}"
लक्ष्य = "{$LinkTarget}" शीर्षक = "{@LinkToolTip}"> <xsl:मान का चयन करें "$DisxslyTitle" = /> </एक> <div वर्ग = "विवरण"> <xsl:select="@Description मान का" /> </div> </div> </div>
--> </टी. आर.> <!-- समापन का उत्सर्जन टेबल टैग. अगर हम अंतिम पंक्ति पर नहीं कर रहे हैं, इस रिक्त हो जाएगा. --> <xsl:मान का का चयन करें="$tableEnd" अक्षम करें आउटपुट बचने="हाँ"/> </xsl:टेम्पलेट> <xsl:टेम्पलेट नाम="formatcurrency"> <xsl:परम नाम="मान" का चयन करें="0" /> <xsl:मान का का चयन करें='संख्या स्वरूप($मान, "$DDD,DDD,DDD.डीडी", "कर्मचारियों")' /> </xsl:टेम्पलेट>

मानक WSS/काई डेटा प्रविष्टि स्क्रीन कैस्केडिंग ड्रॉप-downs का समर्थन नहीं करते (या अन्य इंट्रा-संचार से)

अद्यतन (04/2008): इस महान ब्लॉग प्रविष्टि इस समस्या के लिए एक अच्छा जावास्क्रिप्ट आधारित दृष्टिकोण से पता चलता है: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

द्वितीय अद्यतन: (04/2008): इस ब्लॉग प्रविष्टि भी आशाजनक दिखता है: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

कई बार एक हफ्ते, यदि नहीं दैनिक, एक आवश्यकता है कि सामान्य रूप से कैस्केडिंग ड्रॉप-downs के माध्यम से मुलाकात की जाएगी मंच उपयोगकर्ताओं का वर्णन. उदाहरण के लिए, मैं दो ड्रॉप-डाउन नियंत्रण है:

  • अमेरिका की सूची. राज्य अमेरिका
  • अमेरिका की सूची. शहरों.

जिम्मेदार UI प्रदाताओं के रूप में, हम इसे इस तरह संचालित करने के लिए चाहते हैं:

  • पॉल एक अमेरिकी चुनता है. ड्रॉप-डाउन से राज्य.
  • इस शहर कि करने के लिए चयनित राज्य से संबंधित केवल उन शहरों को फ़िल्टर करने के लिए ड्रॉप-डाउन का कारण बनता है.
  • पॉल इस फ़िल्टर हुई सूची में से एक शहर का चयन करता है.

इस सुविधा के लिए कोई आउट-ऑफ़-द-बॉक्स समर्थन नहीं है. वास्तव में, वहाँ कोई OOB समर्थन नहीं प्रत्यक्ष इंट्रा-फार्म संचार के किसी भी प्रकार के लिए है. इस प्रोग्राम के जरिए कहीं और प्रपत्र पर फ़ील्ड परिवर्तन की प्रतिक्रिया में फ़ील्ड्स छिपने/सक्षम/अक्षम शामिल.

करने के लिए संभव समाधान और इन का वर्णन करने के लिए इस आलेख के वास्तविक उद्देश्य के विकल्प हैं के रूप में मैं उन्हें जानता हूँ:

  1. एक कस्टम स्तंभ प्रकार का विकास. एक कस्टम-स्तंभ-डेवलपर के रूप में, आप "दुनिया पर पूर्ण नियंत्रण है" उस कस्टम स्तंभ का. तुम इस तरह एक कैस्केडिंग ड्रॉप-डाउन कार्यान्वित कर सकते हैं.
  2. वर्कफ़्लो उपयोग करने पर विचार. कुछ मामलों में, आप स्वचालित रूप से फ़ील्ड किसी अन्य फ़ील्ड के मान पर आधारित कोई मान असाइन करने के लिए चाहते हैं. इस मामले में, आप सामान्य रूप से एक परिकलित स्तंभ का उपयोग करने की कोशिश करेंगे, लेकिन कुछ टाइम्स, यह सिर्फ काम नहीं मिलेगा. SharePoint डिज़ाइनर वर्कफ़्लो कोड और दृश्य स्टूडियो में छोड़ने एक अपेक्षाकृत प्रशासन के अनुकूल विकल्प है. यदि आप इस मार्ग से जाना, द्वारा संबोधित किया इस मुद्दे के बारे में पता होना इस अनुच्छेद (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. ईवेंट हैंडलर्स: वर्कफ़्लो की तरह, यह एक तथ्य के बाद समाधान है. आपका ईवेंट हैंडलर एक .NET असेंबली है (सी #, VB.NET) नियंत्रण के लिए जो SharePoint गुजरता. आप विकसित वस्तु सूची के डेटा तक पहुँच गया है (और पूरे ऑब्जेक्ट मॉडल) और किसी भी आवश्यक परिकलन कर सकते हैं.
  4. कस्टम प्रविष्टि प्रपत्र बनाने के लिए SharePoint डिज़ाइनर का उपयोग करें. मैं इस दृष्टिकोण के साथ प्रत्यक्ष अनुभव नहीं है, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. अपने ASP.NET डेटा प्रविष्टि समारोह रोल (एक खड़े अकेले वेब पेज या वेब पार्ट के रूप में) और कि बजाय का उपयोग करें.

अगर किसी को दूसरे और/या बेहतर विकल्प जानता है, कृपया एक टिप्पणी पोस्ट और मैं इस पोस्ट के मुख्य भाग को अद्यतन हूँ.

<अंत />

Technorati टैग:

SharePoint में बार रेखांकन बनाएँ

अवलोकन:

(अद्यतन 12/04/07: अंत में एक और ब्लॉग है कि यह पता लगाता है के माध्यम से एक बहुत ही दिलचस्प वेब पार्ट को जोड़ने के एक और दिलचस्प संसाधन में जोड़ा)

इस ब्लॉग प्रविष्टि में SharePoint एक पट्टी ग्राफ़ बनाने के लिए कैसे का वर्णन करता है. यह केवल डेटा दृश्य वेब पार्ट पर निर्भर करता है के रूप में यह दोनों WSS और MOSS के वातावरण में काम करता है.

समग्र दृष्टिकोण इस प्रकार है:

  1. ग्राफ़ करें करने के लिए इच्छित डेटा वाला एक सूची या दस्तावेज़ लायब्रेरी बनाएँ.
  2. संबद्ध दस्तावेज़ लाइब्रेरी प्लेस / कस्टम सूची पृष्ठ पर और यह एक डेटा दृश्य वेब पार्ट करने के लिए कनवर्ट करें (DVWP).
  3. DVWP XSL एक ग्राफ के रूप में पता चलता है कि HTML जनरेट करने के लिए संशोधित करें.

व्यापार परिदृश्य / सेटअप:

मैं एक कस्टम सूची के साथ मानक शीर्षक स्तंभ और एक अतिरिक्त स्तंभ बनाया है, "स्थिति". इस मॉडल (बहुत ही simplistically) एक "प्राधिकरण के खर्च के लिए" परिदृश्य जहाँ शीर्षक परियोजना और स्थिति मान की सूची से प्रतिनिधित्व:

  • प्रस्तावित
  • प्रक्रिया में
  • ठप

एक इंटरैक्टिव क्षैतिज पट्टी ग्राफ़ इन स्थिति कोड पता चलता है कि उत्पादन के लिए उद्देश्य है.

मैं सूची पॉपुलेटेड है और यह इस तरह दिखता है:

छवि

डेटा दृश्य वेब पार्ट बनाना:

एक पृष्ठ पर कस्टम सूची को जोड़कर DVWP बनाएँ (मेरे मामले में साइट पेज) और दिए गए निर्देशों का पालन करें यहाँ (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

बस DVWP बनाने के साथ, हम भी सभी उपलब्ध पंक्तियों को दिखाने के लिए पेजिंग गुण सेट करने की आवश्यकता है. मेरे लिए, यह कुछ इस तरह दिखता है:

छवि

इस बिंदु पर, मैं हमेशा एसपीडी और ब्राउज़र बंद करें. मैं तब ब्राउज़र का उपयोग कर पेज पुनः खोलना. इस पेज पर वेब पार्ट लेआउट अप अकस्मात mucking से बचा जाता है.

XSLT संशोधित करें:

अब यह समय XSLT संशोधित करने के लिए है.

मैं हमेशा इस बात के लिए दृश्य स्टूडियो उपयोग. (देखें यहाँ intellisense कि तुम एक बहुत मदद मिलेगी के बारे में के लिए एक महत्वपूर्ण नोट).

मैं एक रिक्त प्रोजेक्ट बनाने चार नई फ़ाइलें जोड़ें ("मूल शब्दों की जगह" और "नया" उचित रूप में):

  • Original.xslt
  • New.xslt
  • मूल Params.xml
  • नया Params.xml

मेरे मामले में, यह इस तरह दिखता है:

छवि

वेब पार्ट को संशोधित करें और params और XSL मूल"करने के लिए प्रतिलिपि बनाएँ" Visual Studio में संस्करण.

हम वापस कि एक ग्राफ के रूप में renders HTML में DVWP क्वेरी से प्राप्त परिणामों को बदलने के लिए XSL पैदा करने के लिए यहाँ उद्देश्य है.

यह अंत करने के लिए, इसे पहले इससे पहले कि हम "XSL के रूप में" ज्ञात है कि पागलपन से उलझन में मिल क्या HTML की तरह दिखना चाहिए पर विचार करने में मदद करता है. (स्पष्ट होना करने के लिए, बस एक उदाहरण निम्न है; नहीं इसे टाइप या कॉपी/दृश्य स्टूडियो में चिपकाएँ. मैं एक पूरा झटका उस के लिए बाद में लिखने में प्रारंभिक बिंदु प्रदान करते हैं). निम्न नमूना ग्राफ के तुरंत बाद HTML के अनुसार गाया है:

Sample Bar Graph

संगत HTML:

<html>
<शरीर>
<केंद्र>
<तालिका चौड़ाई = 80%>
<टी. आर.><td><केंद्र>क्षैतिज पट्टी ग्राफ़</td></टी. आर.>
<टी. आर.>
<टीडी संरेखित करें = "सेंटर">
<तालिका बॉर्डर = "1" चौड़ाई = 80%>
<टी. आर.>
<टीडी चौड़ाई = 10%>खुला</td>
<td><तालिका cellpadding ="0" cellspacing ="0" बॉर्डर चौड़ाई 0 = = 50%><tr bgcolor = लाल><td>&nbsp;</td></टी. आर.></तालिका></td>
</टी. आर.>
<टी. आर.>
<टीडी चौड़ाई = 10%>बंद कर दिया</td>
<td><तालिका cellpadding ="0" cellspacing ="0" बॉर्डर चौड़ाई 0 = = 25%><tr bgcolor = लाल><td>&nbsp;</td></टी. आर.></तालिका></td>
</टी. आर.>
<टी. आर.>
<टीडी चौड़ाई = 10%>ठप</td>
<td><तालिका cellpadding ="0" cellspacing ="0" बॉर्डर चौड़ाई 0 = = 25%><tr bgcolor = लाल><td>&nbsp;</td></टी. आर.></तालिका></td>
</टी. आर.>
</तालिका>
</td>
</टी. आर.>
</तालिका>
</शरीर>
</html>

मैं एक मरा सरल दृष्टिकोण के "रेड" के लिए एक पंक्ति का पृष्ठभूमि रंग सेट करके मेरी सलाखों के बनाने के लिए इस्तेमाल किया.

यह है लेने दूर यहाँ है: अंत में, सब हम क्या कर रहे हैं HTML बनाना है पंक्तियों और स्तंभों के साथ.

टेम्पलेट XSLT:

मैं एक क्षैतिज पट्टी ग्राफ़ उत्पन्न XSLT नकल है. यह काफी अच्छी तरह से है टिप्पणी की है तो मैं बहुत इन नोटों को छोड़कर यहाँ जोड़ नहीं होगा:

  • मैं डिफ़ॉल्ट XSL कि SharePoint डिजाइनर मुझे दे दिया जब मैं पहली बार DVWP बनाया के साथ शुरू कर दिया.
  • मैं इस एसपीडी से नीचे कट कर रहा था 657 लाइनों के लिए 166 लाइनों.
  • मैं पैरामीटर XML फ़ाइल के साथ चारों ओर गंदगी नहीं था (जो XSL से अलग है और आप जब तुम DVWP खुद को संशोधित करने के लिए जाना है कि मैं क्या मतलब पता चल जाएगा; वहाँ दो फ़ाइलें आप संशोधित कर सकते हैं). हालांकि, आदेश में यह आसान बनाने के लिए, मैं उनमें से लगभग सभी XSL से दूर किया. इसका मतलब यह है कि यदि आप चाहते हैं उन मापदंडों का उपयोग करें, तुम बस अपने चर परिभाषाएँ XSL को वापस जोड़ने के लिए की जरूरत है. चूंकि आप अपने दृश्य स्टूडियो परियोजना में मूल XSL चर परिभाषाएँ होगा कि आसान हो जाएगा.
  • आप की प्रतिलिपि बनाएँ और यह सीधे आपके दृश्य स्टूडियो परियोजना में चिपकाएँ करने में सक्षम होना चाहिए. तब, मेरे कॉल निकालें और "ShowBar" करने के लिए अपने स्वयं कॉल सम्मिलित करें.
  • बनाने के द्वारा काम करता है नीचे ड्रिल एक <एक href> इस तरह: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. इस तकनीक अन्य संदर्भों में मूल्य की जा सकती. पहली बार में, मैंने सोचा कि मैं एक और अधिक जटिल स्वरूप के अनुरूप करने के लिए की आवश्यकता होगी: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, लेकिन मेरे वातावरण में आवश्यक नहीं है कि. यह काफी आसान के लिए सामान्य है, तो सूची URL करने के लिए हमें SharePoint द्वारा पारित हो जाता है.

यहाँ यह है:

<xsl:शैली पत्रक संस्करण="1.0" शामिल नहीं करें-परिणाम-उपसर्ग="रु z o एस ddwrt डीटी msxsl" 
xmlns:msxsl="कलश:स्कीमा microsoft com:xslt" xmlns:xsl="http://www.w3.org/ 1999/XSL/रूपांतर"
xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer"
xmlns:एएसपी="http://schemas.microsoft.com/ASPNET/20" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
xmlns:ओ="कलश:स्कीमा microsoft com:कार्यालय" xmlns:एस="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:डीटी="uuid:C2F41010-65B3 - 11d 1-A29F-00AA00C14882" xmlns:रु="कलश:स्कीमा microsoft com:rowset" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="कलश:frontpage:आंतरिक"
> <xsl:आउटपुट विधि="html" इंडेंट="नहीं" /> <xsl:दशमलव स्वरूप नेन="" /> <xsl:परम नाम="ListUrlDir"></xsl:परम> <!-- मैं इस एक ड्रिल-डाउन का समर्थन करने के लिए की आवश्यकता. --> <xsl:टेम्पलेट मैच="/" xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:एएसपी="http://schemas.microsoft.com/ASPNET/20"
> <xsl:चर नाम="dvt_StyleName">तालिका</xsl:चर> <xsl:चर नाम="पंक्तियाँ" का चयन करें="/dsQueryResponse/पंक्तियों/पंक्ति" /> <xsl:चर नाम="dvt_RowCount" का चयन करें="गिनती($पंक्तियाँ)" /> <xsl:चर नाम="IsEmpty" का चयन करें="$dvt_RowCount = 0" /> <xsl:चर नाम="dvt_IsEmpty" का चयन करें="$dvt_RowCount = 0" /> <xsl:चुनें> <xsl:कब टेस्ट="$dvt_IsEmpty"> ग्राफ के लिए कोई डेटा नहीं है!<br/> </xsl:कब> <xsl:अन्यथा> <!-- दिलचस्प सामान यहाँ शुरू होता है. हम एक जोड़ी प्रत्येक पंक्ति के लिए चर का ग्राफ में परिभाषित करने की आवश्यकता: आइटम और कुल का प्रतिशत की कुल संख्या. --> <xsl:चर नाम="totalProposed" का चयन करें="गिनती(/dsQueryResponse/पंक्तियों/पंक्ति[मानक के अनुसार अंतरिक्ष(@Status) 'प्रस्तावित' =])" /> <xsl:चर नाम="percentProposed" का चयन करें="$totalProposed div $dvt_RowCount" /> <xsl:चर नाम="totalInProcess" का चयन करें="गिनती(/dsQueryResponse/पंक्तियों/पंक्ति[मानक के अनुसार अंतरिक्ष(@Status) 'प्रक्रिया में' =])" /> <xsl:चर नाम="percentInProcess" का चयन करें="$totalInProcess div $dvt_RowCount" /> <xsl:चर नाम="totalStalled" का चयन करें="गिनती(/dsQueryResponse/पंक्तियों/पंक्ति[मानक के अनुसार अंतरिक्ष(@Status) 'रुक' =])" /> <xsl:चर नाम="percentStalled" का चयन करें="$totalStalled div $dvt_RowCount" /> <!-- हम हमारे HTML तालिका यहाँ परिभाषित करें. मैं इसे लगातार करने के लिए कुछ मानक SharePoint शैलियों से यहाँ उधार रहा. मुझे लगता है कि यह रूप में अच्छी तरह के रूप में थीम को ओवरराइड करता है वैश्विक सीएसएस फ़ाइल में किए गए परिवर्तन सम्मान होगा. --> <तालिका चौड़ाई="100%" cellspacing="0" cellpadding="2" शैली="बॉर्डर-दाएँ: 1 ठोस #C0C0C0; सीमा-नीचे: 1 ठोस #C0C0C0; सीमा-बाएँ-शैली: ठोस; बॉर्डर-बाएँ-चौड़ाई: 1; सीमा-शीर्ष-शैली: ठोस; सीमा-शीर्ष-चौड़ाई: 1;"> <टी. आर.> <td संरेखित करें="केंद्र"> <तालिका बॉर्डर="1" चौड़ाई="100%"> <!-- कि हम ग्राफ़ करें करने के लिए चाहते हैं के लिए प्रत्येक स्थिति, हम कहते हैं "ShowBar" टेम्पलेट. हम इसे पारित: 1. पंक्ति के लिए एक लेबल. यह एक हाइपरलिंक में तब्दील हो जाता है. 2. प्रतिशत (ऊपर से चर). 3. अंतर्निहित सूची से कोड का वास्तविक फ़ील्ड नाम. यह प्रदर्शन लेबल से मेल खाते की आवश्यकता नहीं है. 4. फ़ील्ड मान के लिए मिलान #3. 5. यह स्थिति कोड की कुल आइटम्स (नहीं सभी स्थिति कोड का कुल योग). उत्सर्जन करता है यह एक <टी. आर.></टी. आर.> और क्षैतिज पट्टी ग्राफ़ रेखा. हम इस टेम्पलेट के लिए प्रत्येक स्थिति कोड हम को देखने के लिए चाहते हैं कॉल. --> <xsl:कॉल-टेम्पलेट नाम="ShowBar"> <xsl:परम के साथ नाम="BarDisplayLabel" का चयन करें="'' का प्रस्ताव"/> <xsl:परम के साथ नाम="BarPercent" का चयन करें="$percentProposed"/> <xsl:परम के साथ नाम="QueryFilterFieldName" का चयन करें="'स्थिति'"/> <xsl:परम के साथ नाम="QueryFilterFieldValue" का चयन करें="'' का प्रस्ताव"/> <xsl:परम के साथ नाम="TotalItems" का चयन करें="$totalProposed"></xsl:परम के साथ> </xsl:कॉल-टेम्पलेट> <xsl:कॉल-टेम्पलेट नाम="ShowBar"> <xsl:परम के साथ नाम="BarDisplayLabel" का चयन करें="'स्थगित'"/> <xsl:परम के साथ नाम="BarPercent" का चयन करें="$percentStalled"/> <xsl:परम के साथ नाम="QueryFilterFieldName" का चयन करें="'स्थिति'"/> <xsl:परम के साथ नाम="QueryFilterFieldValue" का चयन करें="'स्थगित'"/> <xsl:परम के साथ नाम="TotalItems" का चयन करें="$totalStalled"></xsl:परम के साथ> </xsl:कॉल-टेम्पलेट> <xsl:कॉल-टेम्पलेट नाम="ShowBar"> <xsl:परम के साथ नाम="BarDisplayLabel" का चयन करें="'प्रक्रिया में'"/> <xsl:परम के साथ नाम="BarPercent" का चयन करें="$percentInProcess"/> <xsl:परम के साथ नाम="QueryFilterFieldName" का चयन करें="'स्थिति'"/> <xsl:परम के साथ नाम="QueryFilterFieldValue" का चयन करें="'प्रक्रिया में'"/> <xsl:परम के साथ नाम="TotalItems" का चयन करें="$totalInProcess"></xsl:परम के साथ> </xsl:कॉल-टेम्पलेट> </तालिका> </td> </टी. आर.> </तालिका> </xsl:अन्यथा> </xsl:चुनें> </xsl:टेम्पलेट> <!-- इस टेम्पलेट की पट्टी ग्राफ़ में अलग-अलग लाइनों प्रदर्शित करने का कार्य करता है. तुम शायद अपने यहाँ tweaking के अधिकांश करता हूँ. --> <xsl:टेम्पलेट नाम="ShowBar"> <xsl:परम नाम="BarDisplayLabel" /> <!-- लेबल दिखाएँ --> <xsl:परम नाम="BarPercent"/> <!-- कुल का प्रतिशत. --> <xsl:परम नाम="QueryFilterFieldName"/> <!-- क्वेरी के लिए कूद करने के लिए प्रयुक्त & फ़िल्टर --> <xsl:परम नाम="QueryFilterFieldValue"/> <!-- क्वेरी के लिए कूद करने के लिए प्रयुक्त & फ़िल्टर --> <xsl:परम नाम="TotalItems" /> <!-- इस barlabel की कुल संख्या --> <टी. आर.> <!-- पट्टी ही लेबल. --> <td वर्ग="एमएस-formbody" चौड़ाई="30%"> <!-- इस बयान के अगले सेट एक अंतर्निहित डेटा के फ़िल्टर किए गए दृश्य के लिए नीचे ड्रिल करने के लिए हमें की अनुमति देता है एक क्वेरी स्ट्रिंग बनाता है. हम करना कुछ बातों का यहाँ का उपयोग करें: 1. हम FilterField1 और FilterValue1 पर एक स्तंभ फ़िल्टर करने के लिए एक सूची करने के लिए पारित कर सकते हैं. 2. SharePoint एक कुंजी पैरामीटर करने के लिए हमें गुजर रहा है, ListUrlDir कि अंतर्निहित सूची के खिलाफ जो इस DVWP "चल रहा है" के लिए अंक. XSL मज़ा नहीं है? --> <xsl:पाठ अक्षम करें आउटपुट बचने="हाँ"> <![CDATA[<एक href ="]]></xsl:पाठ> <xsl:मान का का चयन करें="$ListUrlDir"/> <xsl:पाठ अक्षम करें आउटपुट बचने="हाँ"><![CDATA[?FilterField1 =]]></xsl:पाठ> <xsl:मान का का चयन करें="$QueryFilterFieldName"/> <xsl:पाठ अक्षम करें आउटपुट बचने="हाँ"><![CDATA[&FilterValue1 =]]></xsl:पाठ> <xsl:मान का का चयन करें="$QueryFilterFieldValue"/> <xsl:पाठ अक्षम करें आउटपुट बचने="हाँ"><![CDATA[">]]></xsl:पाठ> <xsl:मान का का चयन करें="$BarDisplayLabel"/> <xsl:पाठ अक्षम करें आउटपुट बचने="हाँ"><![CDATA[</एक>]]></xsl:पाठ> <!-- अगले बिट प्रारूप में कुछ संख्या से पता चलता है: "(कुल / % की कुल)" --> (<xsl:मान का का चयन करें="$TotalItems"/> / <!-- यह हमारे लिए एक अच्छा प्रतिशत लेबल बनाता है. धन्यवाद, माइक्रोसॉफ्ट! --> <xsl:कॉल-टेम्पलेट नाम="percentformat"> <xsl:परम के साथ नाम="प्रतिशत" का चयन करें="$BarPercent"/> </xsl:कॉल-टेम्पलेट>) </td> <!-- अंत में, फेंकना एक <td> टैग पट्टी के लिए ही.--> <td> <तालिका cellpadding="0" cellspacing="0" बॉर्डर="0" चौड़ाई="{दौर($BarPercent * 100)+1}%"> <टी. आर. bgcolor="लाल"> <xsl:पाठ अक्षम करें आउटपुट बचने="हाँ"><![CDATA[&nbsp;]]></xsl:पाठ> </टी. आर.> </तालिका> </td> </टी. आर.> </xsl:टेम्पलेट> <!-- यह सीधे मैं एक एमएस टेम्पलेट में पाया कुछ XSL से लिया जाता है. --> <xsl:टेम्पलेट नाम="percentformat"> <xsl:परम नाम="प्रतिशत"/> <xsl:चुनें> <xsl:कब टेस्ट="संख्या स्वरूप($प्रतिशत, '#,##0%;-#,##0%')'नेन' =">0%</xsl:कब> <xsl:अन्यथा> <xsl:मान का का चयन करें="संख्या स्वरूप($प्रतिशत, '#,##0%;-#,##0%')" /> </xsl:अन्यथा> </xsl:चुनें> </xsl:टेम्पलेट> </xsl:शैली पत्रक>

परिणाम:

इस ग्राफ ऊपर से XSL उत्पन्न करता है:

छवि

स्थिति कोड पर क्लिक करके अंतर्निहित डेटा के लिए नीचे ड्रिल:

छवि

विचार समापन:

इस सामान्यीकृत किया जा कर सकते हैं?

मैं इस रेखांकन अवधारणा प्यार करता हूँ, लेकिन मैं इस तथ्य है कि मैं जाना है और इतना सारा हाथ-कोडिंग करते है नफरत. मैं दिया है चाहे इसे सामान्यीकृत किया जा सकता करने के लिए थोड़ा सोचा और मैं आशावादी हूँ, लेकिन मैं भी थोड़ा भयभीत कि कहीं किसी भी काम के आसपास की पेशकश नहीं होगा मार्ग के किनारे एक ईंट की दीवार हो सकता हूँ. अगर किसी को इस पर कुछ अच्छे विचार है, कृपया टिप्पणी में एक नोट बनाएँ या ईमेल मुझे.

अनुलंब रेखांकन:

यह एक क्षैतिज पट्टी ग्राफ़ है. यह निश्चित रूप से एक ऊर्ध्वाधर ग्राफ़ बनाने के लिए संभव है. हम सिर्फ परिवर्तन HTML करने के लिए की जरूरत है. मैं उसी तरह शुरू होगा: एक एक अनुलंब पट्टी ग्राफ़ के HTML प्रतिनिधित्व बनाएँ और तब कि XSL के जरिए पाने के लिए बाहर आंकड़ा. अगर किसी को उस में रुचि है, मैं इसे बाहर की कोशिश करो और kinks बाहर काम करने के लिए राजी किया जा सकता है. अगर किसी को पहले से ही किया है कि, please let me know and I’ll gladly link to your blog 🙂

मुझे लगता है कि एक ऊर्ध्वाधर ग्राफ के साथ चुनौती है कि ग्राफ के लिए लेबल्स का प्रबंधन करने के लिए और अधिक कठिन हैं, लेकिन निश्चित रूप से नहीं असंभव.

फ़ील्ड नाम पकड़ लिया:

वहाँ कम से कम दो बातें आपकी फ़ील्ड के नाम के साथ के लिए देखो करने के लिए कर रहे हैं.

प्रथम, XSL में बच गए किया जा करने के लिए एक स्थान के साथ एक फ़ील्ड नाम है. यह शायद एक मुद्दा यहाँ हो जाएगा:

        <xsl:चर नाम="totalProposed" 
का चयन करें="गिनती(/dsQueryResponse/पंक्तियों/पंक्ति[मानक के अनुसार अंतरिक्ष(@Status) 'प्रस्तावित' =])" />

यदि आपकी स्थिति"" स्तम्भ वास्तव में "स्थिति कोड नाम दिया गया है" तो आप की जरूरत है इसे "Status_x0020_Code" के रूप में संदर्भित करने के लिए:

   <xsl:चर नाम="totalProposed" 
का चयन करें="गिनती(/dsQueryResponse/पंक्तियों/पंक्ति[मानक के अनुसार अंतरिक्ष(@Status_x0020_Code) 'प्रस्तावित' =])" />

दूसरा, और मैं इस पर थोड़ा फजी हूँ, लेकिन तुम भी फ़ील्ड नाम परिवर्तन के लिए सतर्क होने की जरूरत. यदि आप अपने "स्थिति कोड फ़ील्ड नाम" और फिर बाद में, यह "AFE स्थिति" करने के लिए का नाम बदलें, "आंतरिक नाम" परिवर्तन नहीं करता है. आंतरिक नाम अभी भी "स्थिति कोड हो जाएगा" और "Status_x0020_Code" के रूप में संदर्भित किया जाना चाहिए. 'अन्य संसाधन" लिंक्स का निदान करें और इस तरह की समस्या को ठीक मदद कर सकते हैं.

उस रंग के बारे में:

मैं "लाल उठाया" क्योंकि यह इस वक्त मेरे पास भाता है. यह दिखाने के अलग अलग रंग के रूप में अधिक से अधिक सिर्फ एक संख्या का एक दृश्य विवरण उपलब्ध कराने के लिए एक बड़ा सौदा नहीं होगा, लेकिन इसके अलावा एक उपयोगी KPI प्रदान करने के लिए. उदाहरण के लिए, यदि का प्रतिशत "ठप" AFE की है > 10% तो यह लाल शो, अन्यथा यह काले रंग में दिखाएँ. का प्रयोग करें <xsl:चुनें> यह पूरा करने के लिए.

अन्य संसाधनों:

खुश को बदलने!

<अंत />

मेरे ब्लॉग के लिए सदस्यता लें!

किसी कस्टम सूची के जरिए ओम डेटा प्रस्तुत करें (या, अभी तक एक और ओम डाटा Displayor [YACC की तरह, लेकिन अलग अलग])

आज, मैं "स्तंभ नाम जो आपने पहले से ही उपयोग में है या सुरक्षित संदेश के पीछे मूल कारण नीचे ट्रैकिंग घंटे की एक मुट्ठी भर खर्च. कोई अन्य नाम चुनें।"

सवाल में स्तंभ बनाया जा सकता है, नष्ट कर दिया और एक अन्य वातावरण में पुन: बनते, तो मैं जानता था कि यह एक आरक्षित नाम नहीं था. हालांकि, मैं बस कहीं भी स्तंभ किसी भी साइट पर मानक SharePoint उपयोगकर्ता इंटरफ़ेस के माध्यम से साइट संग्रह में मिल सके.

मैं करने के लिए पोस्ट किया गया Msdn वेब मंचों यहाँ और अदम्य एंड्रयू वुडवर्ड मुझे में अंतर्निहित ऑब्जेक्ट मॉडल डेटा की दिशा की ओर इशारा किया.

मैं करने के लिए दूर चला गया codeplex कुछ उपकरण है कि मदद मिलेगी मुझे अंतर्निहित ओम डेटा में सहकर्मी और मुझे परेशानी का पता लगाने में मदद खोजने के लिए.

मैं कई उपकरण की कोशिश की और वे बहुत ही शांत और दिलचस्प लेकिन अंत में थे, UI मेरा उद्देश्य के लिए काफी अच्छा नहीं था. मैं उन्हें किसी भी तरह से आलोचना नहीं कर रहा हूँ, लेकिन जब वे उनके UI बनाया स्पष्ट रूप से उपकरण निर्माताओं मेरी समस्या में मन नहीं था :). अधिकांश लोगों को लगता है समय और कार्य केंद्र को बनाने में प्रयास के एक निष्पक्ष राशि निवेश हो / क्लाइंट अनुप्रयोगों है कि उपलब्ध कराने के पेड़ बार देखे गए, प्रसंग मेनू राइट-क्लिक करें और आगे. ये अच्छा कर रहे हैं और सभी, लेकिन यह भी बहुत लचीला है एक शीर्ष के--लाइन उपयोगकर्ता अनुभव बनाने के लिए काम का एक बहुत कुछ है.

मैं वास्तव में इस समस्या के लिए एक जवाब की जरूरत. यह मुझे करने के लिए कि हुआ अगर मैं एक कस्टम सूची में साइट संग्रह में साइट स्तंभ के सभी मिल सकती है, मैं फ़िल्टर सकता है, सॉर्ट और विचार है कि मदद मिलेगी मुझे ढूँढ यह माना जाता है कि मौजूदा स्तंभ बनाएँ (जो यह किया था, BTW). मैं आगे चला गया और कि और एक या दो घंटे के बाद किया था, मेरे सभी साइट स्तंभ समूहीकरण के साथ एक कस्टम सूची में भरी हुई थी, और आगे छँटाई. मैं पाँच मिनट बाद मेरा जवाब मिल गया.

और अगर, जब मैं सफलतापूर्वक दुनिया भर में ले लो, मुझे लगता है कि मैं कि सभी SharePoint उपकरण प्रदाताओं गंभीरता से विचार करना होगा एक कस्टम सूची में उनके ऑब्जेक्ट मॉडल डेटा सरफेसिंग डिक्री करेंगे. इस तरह, मैं शक्ति है किसी भी खोज के लिए जिस तरह मैं चाहता हूँ (विवश, बेशक, मानक sharepoint सुविधाओं के द्वारा).