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

HTTP 406 SharePoint बाकी अंत अंक के खिलाफ कोणीय $http.get का उपयोग करते समय त्रुटि

अद्यतन: मार्क विज्ञापन ndersson जानकारी के इस महान टुकड़ा बाहर की ओर इशारा किया: http://blogs.office.com/2014/08/13/json-light-support-rest-sharepoint-api-released/. कि बहुत कुछ बताते हैं :).

कि एक ब्लॉग पोस्ट के सबसे खराब शीर्षक हो सकता है कभी! Anyhoo.

मैं आमतौर पर एक O365 इंस्टेंस के खिलाफ मेरी प्रोटोटाइप के सभी करते हैं. मैं मेरी व्यक्तिगत उदाहरण है इतना है कि मैं किसी और को प्रभावित करने के बारे में चिंता करने की जरूरत नहीं है. एक अलग रूप में-जब हम काई-के साथ हमारे लैपटॉप पर आभासी मशीनों के चारों ओर बढ़ाया कॉल SQL Server याद, IIS, हायपर-V बनाम तय करने. VMWare? Anyhoo...

मैं एक app Angular करता है इस वातावरण में का उपयोग कर विकसित किया था, अन्य बातों के अलावा, यह:

$http.get(serverUrl)
.सफलता(समारोह(डेटा, स्थिति, शीर्ष लेख, config) {

var getLinksResponse = डेटा;

getLinksResponse.value.forEach(समारोह(theResult) {

// और इतने पर और इतने फेन

यह बस ठीक दो विभिन्न SharePoint ऑनलाइन वातावरण में काम कर रहा था. हालांकि, जब मेरे सहयोगी यह एक Cloudshare इंस्टेंस के लिए रखी, वह हो रही थी एक HTTP 406 त्रुटि (जो पहली बार मैं कभी मिला है कि एक था, तो.. याय, मेरा अंदाज़ा है). हम अनुसंधान के एक सा था और देखा कि "स्वीकार" शीर्ष लेख बंद था. SharePoint ऑनलाइन के साथ पूरी तरह से खुश था:

स्वीकार करें: आवेदन/json

Cloudshare आवृत्ति है लेकिन (जो प्रेम पर सपा है, एक वर्चुअल सर्वर में मेजबानी की) क्लासिक चाहता था "odata वाचाल =" में रूप में अच्छी तरह से जोड़ा गया:

स्वीकार करें: आवेदन/json;odata वाचाल =

कि ठीक करने के लिए, हम इस तरह के रूप में हैडर जोड़ा:

var config = {शीर्ष लेख: {
'स्वीकार करें': ' आवेदन/json;odata वाचाल ='
}
};

$http.get(serverUrl,config)
.सफलता(समारोह(डेटा, स्थिति, शीर्ष लेख, config) {

var getLinksResponse = डेटा;

getLinksResponse.value.forEach(समारोह(theResult) {

// और इतने पर और इतने फेन

कि के छुटकारा मिल गया 406, लेकिन यह भी प्रतिक्रिया का स्वरूप बदल गया. इसे और अधिक था.. वाचाल. (haha!) अधिक परिवर्तन आवश्यक थे और यहाँ अंतिम परिणाम है:

var config = {शीर्ष लेख: {
'स्वीकार करें': ' आवेदन/json;odata वाचाल ='
}
};

$http.get(serverUrl,config)
.सफलता(समारोह(डेटा, स्थिति, शीर्ष लेख, config) {

var getLinksResponse = डेटा;

getLinksResponse.d.results.forEach(समारोह(theResult) {

// और इतने पर और इतने फेन

यह केवल में बदल गया एक 30 हमारे लिए मिनट समस्या, तो हम बाहर lucked. उम्मीद है कि किसी को यह उपयोगी पाता.

</अंत>

जागरूकता बढ़ाएं / जावास्क्रिप्ट चौखटे के दत्तक ग्रहण

मेरे सहयोगी, जावेद अंसारी (http://www.bigapplesharepoint.com/team?showExpertName=Javed%20Ansari&rsource=pgblog), वह पसंद करती है या कम से कम के साथ SharePoint के साथ उपयोग कर रहा है चौखटे पर एक संक्षिप्त सारांश ब्लॉग पोस्ट ने लिखा: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=53&rsource=PGBlog).

jQuery विक्टर मैदान पर किया गया है लगता है, तो बात है, अब साल के लिए, लेकिन दूसरों को और अधिक नए हैं और इसे से जूझ रहे के पोस्टरों को सॉर्ट, Angular की तरह. (SPServices, बेशक, एक जीवन रक्षक वर्षों के लिए किया गया है और हो सकता है तो मुझे लगता है कि करने के लिए जारी रहेगा).

क्या लोगों का उपयोग कर रहे हैं? वे माइक्रोसॉफ्ट के टूलींग पर अधिक ध्यान केंद्रित कर रहे हैं (CSOM / JSOM) या अधिक Angular की ओर चलती, नॉकआउट, अंगारा, आदि?

मैं इन गैर-Microsoft चौखटे की ओर बढ़ती पूर्वाग्रह है. मुझे लगता है कि और के साथ काम करने के लिए जोर जोर से MSFT चीज़ें है, लगभग के रूप में ज्यादा पुरानी शैली सर्वर-साइड देव के रूप में सीखने की अवस्था की आवश्यकता होती.

एक टिप्पणी यहाँ पोस्ट या पर पर बिग एप्पल SharePoint यदि आप चर्चा करना चाहते हैं (बिग एप्पल एक अच्छी चर्चा की अधिक संभावना होती है करेगा).

</अंत>

SharePoint टाइमर नौकरियों साइट संग्रह कॉन्फ़िगरेशन से कताई

मेरे सहयोगी, आशीष पटेल, एक ब्लॉग पोस्ट ने लिखा एक लचीला टाइमर नौकरी आर्किटेक्चर का वर्णन कि लंबे समय से चल रहे कार्यों और/या रिपोर्ट का समर्थन करने के लिए कुछ अच्छा लचीलापन affords.  उनके शब्दों में:

1. चेक्ड बाहर फ़ाइलों का विश्लेषण और व्यक्तियों के लिए अनुस्मारक भेजने यदि संख्या दिनों की (फ़ाइल चेक आउट किया गया था के बाद से) निश्चित थ्रेशोल्ड सीमा से अधिक

2. एक विशेष सामग्री हटाया या सिस्टम से संग्रहीत है जब लिंक से अन्य सामग्री निकालना

3. उपयोगकर्ता को वह साइट संग्रह में सभी जाले में सदस्यता प्राप्त सभी चेतावनियाँ देखना चाहता है

4. एक अनुस्मारक भेजने जब एक समीक्षा समय सामग्री में निर्दिष्ट किया गया था और उस तारीख से आ रहा है सामग्री की समीक्षा करने के लिए लेखकों के लिए

अच्छी तरह से, सूची पर चला जाता है...

– पर और अधिक देखने: http://www.bigapplesharepoint.com/ पृष्ठों/दृश्य-एक-Insight.aspx?BlogID=40#sthash.7cKuiwly.dpuf

वहाँ रहे हैं बार जब होने के इस तरह से कुछ बहुत ही उपयोगी होता है मेरा अतीत में.

</अंत>

कैसे करना है: इकाई परीक्षण और परीक्षण कवरेज QUnit.js और Blanket.js के साथ एक कार्यालय के लिए कॉन्फ़िगर करें 365 SharePoint अनुप्रयोग

परिचय

मैं इकाई परीक्षण तलाश रहा है और कवरेज के लिए जावास्क्रिप्ट परीक्षण के रूप में मैं कार्यालय में SharePoint ऑनलाइन के लिए एक नया SharePoint app पर काम 365 सुइट।  मुझे करने के लिए स्पष्ट अनुसंधान रास्तों का नेतृत्व किया Qunit.js और उस के बाद का अधिकार, करने के लिए Blanket.js.

QUnit मुझे ऊपर इकाई परीक्षण सेट करें और उन्हें में मॉड्यूल समूह हैं।  एक मॉड्यूल अभी संबंधित परीक्षणों को व्यवस्थित करने के लिए एक सरल तरीका है. (मुझे यकीन नहीं है मैं यह उद्देश्य के रूप में उपयोग कर रहा हूँ, लेकिन यह मेरे लिए अभी तक मैं इस तरह अभी तक परिभाषित किया परीक्षणों के छोटे सेट के साथ कार्य करना है).

Blanket.js Qunit के साथ एकीकृत करता है और यह मेरे जावास्क्रिप्ट के वास्तविक लाइनों है कि थे- और अधिक महत्वपूर्ण बात है-वास्तव में परीक्षण चलाने के पाठ्यक्रम में क्रियान्वित थे नहीं दिखाएगा।  इस 'कवरेज'-लाइनों है कि निष्पादित परीक्षण द्वारा कवर कर रहे हैं जबकि अन्य नहीं हैं.

अप अच्छा परीक्षण मामलों की स्थापना और कवरेज देखने के बीच, हम कि हमारे कोड दोष छिपा है जोखिम को कम कर सकते हैं।  गुड टाइम्स.

Qunit

मान लें आप अपने दृश्य स्टूडियो है प्रोजेक्ट सेट अप, जावास्क्रिप्ट पैकेज से डाउनलोड करके प्रारंभ करें http://qunitjs.com.  जावास्क्रिप्ट और इसी सीएसएस करने के लिए अपने समाधान जोड़ें।  मेरा इस तरह दिखता है:

image

चित्रा 1

जैसा कि आप देख सकते हैं, मैं इस्तेमाल कर रहा था 1.13.0 समय पर मैंने लिखा है इस ब्लॉग पोस्ट. डाउनलोड करें और सीएसएस फ़ाइल जोड़ने के लिए मत भूलना.

कि जिस तरह से बाहर, टेस्ट हार्नेस के कुछ प्रकार बनाने के लिए और Qunit बिट्स को संदर्भित करने के लिए अगले कदम है।  मैं तो मैं "के रूप में दिखाया गया QuizUtil_test.html" नामक एक HTML पृष्ठ बनाया "QuizUtil.js" नामक एक स्क्रिप्ट फ़ाइल में एक गुच्छा कार्यों का परीक्षण कर रहा हूँ:

image चित्रा 2

यहाँ कोड है:

<!DOCTYPE html>
<html xmlns"http =://www.w3.org/ 1999/xhtml">
<सिर>
    <शीर्षक>Qunit साथ QuizUtil टेस्ट</शीर्षक>
    <लिंक रिलायंस एनर्जी"stylesheet =" href="../CSS/qunit-1.13.0.css" />
    <स्क्रिप्ट प्रकारपाठ/जावास्क्रिप्ट"=" एसआरसी="QuizUtil.js" डेटा-कवर></स्क्रिप्ट>
    <स्क्रिप्ट प्रकार ="पाठ/जावास्क्रिप्ट" src ="qunit-1.13.0.js"></स्क्रिप्ट>
    <स्क्रिप्ट प्रकार ="पाठ/जावास्क्रिप्ट" src ="blanket.min.js"></स्क्रिप्ट>

    <स्क्रिप्ट>
        मॉड्यूल("getIDFromLookup");
        टेस्ट("QuizUtil getIDFromLookupField", समारोह () {
            var goodValue = "1;#पॉल Galvin";

            बराबर(getIDFromLookupField(goodValue) + 1, 2), "की ID [" + goodValue + "] + 1 2 होना चाहिए";
            बराबर(getIDFromLookupField(अपरिभाषित), अपरिभाषित, "अपरिभाषित इनपुट तर्क अपरिभाषित परिणाम लौट जाना चाहिए।");
            बराबर(getIDFromLookupField(""), अपरिभाषित, "खाली इनपुट तर्क कोई अनिर्धारित मान वापस आ जाना चाहिए।");
            बराबर(getIDFromLookupField("gobbledigood3-thq;dkvn एडीए;skfja sdjfbvubvqrubqer0873407t534piutheqw;वी. एन."), अपरिभाषित,"हमेशा एक परिणाम परिवर्तनीय एक पूर्णांक के लिए वापस चाहिए");
            बराबर(getIDFromLookupField("2;#कुछ अन्य व्यक्ति"), "2", 'की जाँच [2;#कुछ अन्य व्यक्ति].");
            बराबर(getIDFromLookupField("9834524;#लंबे मान"), "9834524", "बड़े मान परीक्षण।");
            notEqual(getIDFromLookupField("5;#किसी को भी", 6), 6, "एक notEqual परीक्षण (5 इसके बराबर नहीं है 6 इस नमूने के लिए: [5;#किसी को भी]");

        });

        मॉड्यूल("htmlEscape");
        टेस्ट("QuizUtil htmlEscape()", समारोह () {
            बराबर(htmlEscape("<"), "&लेफ्टिनेंट;", "ऑपरेटर की तुलना में एक कम से बचने ('<')");
            बराबर(htmlEscape("<div वर्ग =  "someclass">कुछ पाठ</div>"), "&लेफ्टिनेंट;div वर्ग =&quot;someclass&quot;&जी. टी.;कुछ पाठ&लेफ्टिनेंट;/div&जी. टी.;", "और अधिक जटिल परीक्षण स्ट्रिंग।");
        });

        मॉड्यूल("getDateAsCaml");
        टेस्ट("QuizUtil getDateAsCaml()", समारोह () {
            बराबर(getDateAsCaml(नई दिनांक("12/31/2013")), "2013-12-31T:00:00:00", "हार्ड कोडित दिनांक का परीक्षण: [12/31/2013]");
            बराबर(getDateAsCaml(नई दिनांक("01/05/2014")), "2014-01-05T:00:00:00", "हार्ड कोडित दिनांक का परीक्षण: [01/05/2014]");
            बराबर(getDateAsCaml(नई दिनांक("01/31/2014")), "2014-01-31T:00:00:00", "हार्ड कोडित दिनांक का परीक्षण: [01/31/2014]");
            बराबर(getTodayAsCaml(), getDateAsCaml(नई दिनांक()), "getTodayAsCaml() getDateAsCaml बराबर होना चाहिए(नई तारीख())");
            बराबर(getDateAsCaml("बकवास मान"), अपरिभाषित, "एक बकवास मान की तारीख करने के लिए प्रयास करें।");
            बराबर(getDateAsCaml(अपरिभाषित), अपरिभाषित, "की तारीख करने के लिए प्रयास करें [अपरिभाषित] दिनांक।");
        });

        मॉड्यूल("getParameterByName");
        टेस्ट("QuizUtil getParameterByName (से क्वेरी स्ट्रिंग)", समारोह () {
            बराबर(getParameterByName(अपरिभाषित), अपरिभाषित, "करने के लिए कोशिश अपरिभाषित पैरामीटर अपरिभाषित लौट जाना चाहिए।");
            बराबर(getParameterByName("मौजूद नहीं है"), अपरिभाषित, "जब हम जानते हैं कि पैरामीटर मौजूद नहीं पैरामीटर मान प्राप्त करने के लिए प्रयास करें।");

        });

        मॉड्यूल("कुकीज़");
        टेस्ट("QuizUtil विभिन्न कुकी कार्य।", समारोह () {
            बराबर(setCookie(टेस्ट"", "1", -1), getCookieValue(टेस्ट""), "जाओ मैं सेट कुकी काम करना चाहिए।");
            बराबर(setCookie("anycookie", "1", -1), सच है, "एक मान्य खाना पकाने की स्थापना 'सच' लौट जाना चाहिए।");
            बराबर(setCookie("पागल कुकी का नाम !@#$%"%\^&*(()?/><.,", "1", -1), सच है, "एक बुरा कुकी नाम की स्थापना 'झूठी' लौट जाना चाहिए।");
            बराबर(setCookie(अपरिभाषित, "1", -1), अपरिभाषित, "कुकी नाम के रूप में अनिर्धारित गुजर रहा।");
            बराबर(getCookieValue("मौजूद नहीं है"), "", "कुकी टेस्ट मौजूद नहीं है।");
        });

    </स्क्रिप्ट>
</सिर>
<शरीर>
    <div आईडी"qunit ="></div>
    <div आईडी= "qunit-स्थिरता"></div>

</शरीर>
</html>

वहाँ कई चीज़ें यहाँ क्या हो रहा हैं:

  1. मेरे कोड को संदर्भित (QuizUtil.js)
  2. Qunity.js संदर्भित
  3. कुछ मॉड्यूल को परिभाषित करना (getIDFromLookup, कुकीज़, और दूसरों)
  4. रखकर एक <div> जिसका आईडी "qunit" है.

तब, मैं सिर्फ इस पृष्ठ ऊपर खींचने के लिए और आप इस तरह कुछ मिल:

image

चित्रा 3

यदि आप शीर्ष के पार देखो, आपके पास कुछ विकल्प हैं, जिनमें से दो रोचक हैं:

  • परीक्षण पारित छुपाएँ: बहुत स्पष्ट है।  आपकी आँख बस समस्या क्षेत्रों और अव्यवस्था की नहीं एक बहुत कुछ देखने में मदद कर सकते हैं.
  • मॉड्यूल: (ड्रॉप डाउन): यह परीक्षण आप चाहते हैं की सिर्फ उन समूहों के लिए नीचे परीक्षण को फ़िल्टर करेंगे.

परीक्षण के रूप में खुद-कुछ टिप्पणियाँ:

  • यह कि आप ऐसी है कि यह पहली जगह में testable है अपने कोड लिखने के लिए की आवश्यकता है कहे बिना जाता है।  उपकरण का उपयोग करके उस अनुशासन को लागू मदद कर सकते हैं. उदाहरण के लिए, मैं एक समारोह "getTodayAsCaml कहा जाता था()”.  यह बहुत testable नहीं के बाद से यह कोई इनपुट तर्क लेता है और यह समानता के लिए परीक्षण करने के लिए, हम लगातार परीक्षण कोड वर्तमान दिनांक को प्रतिबिंबित करने के लिए अद्यतन करने के लिए की आवश्यकता होगी।  मैं इसे एक डेटा इनपुट पैरामीटर जोड़ने तो वर्तमान दिनांक जब मैं CAML स्वरूप में आज की तिथि चाहते हैं गुजर द्वारा refactored.
  • Qunit फ्रेमवर्क दस्तावेज़ अपने स्वयं के परीक्षण और यह बहुत मजबूत लगता है।  यह समानता के लिए परीक्षण की तरह सरल बातें कर सकते हैं और भी ajax शैली कॉल के लिए समर्थन किया है (दोनों "असली" या ठट्ठा अपने पसंदीदा mocker का उपयोग कर).
  • इस प्रक्रिया के माध्यम से जा रहे भी बढ़त मामले – क्या "अनिर्धारित" के साथ होता है के माध्यम से लगता है कि करने के लिए आप बलों या null एक समारोह में पारित कर दिया गया है।  यह मर बाहर इन परिदृश्यों का परीक्षण करने के लिए सरल बनाता है।  अच्छी चीजें.

Blanket.js के साथ कवरेज

Blanket.js Qunit ट्रैकिंग कोड के वास्तविक लाइनों है कि आपके परीक्षण चलाने के पाठ्यक्रम के दौरान निष्पादित द्वारा पूरक।  यह अधिकार तो भले ही यह एक पूरी अलग app है Qunit में एकीकृत, यह अच्छी तरह से खेलता-यह वास्तव में लग रहा है जैसे कि यह एक निर्बाध app है.

इस क्रिया में blanket.js है:

image चित्रा 4

image

चित्रा 5

(आप वास्तव में ऊपर "कवरेज को सक्षम करें" चेकबॉक्स पर क्लिक करने के लिए है [आंकड़ा देखें 3] यह सक्षम करने के लिए।)

चित्रा में हाइलाइट की गई रेखाएँ 5 मेरा परीक्षण के किसी भी द्वारा निष्पादित नहीं किया गया है, तो मैं एक परीक्षा है कि यदि मैं पूर्ण कवरेज चाहते हैं निष्पादित करने के लिए उन्हें कारण ईजाद करना करने की आवश्यकता.

इन चरणों का पालन करके काम कर blanket.js हो जाओ:

  1. इसे से डाउनलोड करें http://blanketjs.org/.
  2. यह आपके प्रोजेक्ट के लिए जोड़ें
  3. अपने टेस्ट हार्नेस पृष्ठ अद्यतन करें (मेरे मामले में QuizUtil_test.html) इस प्रकार:
    1. संदर्भ कोड
    2. सजाने के लिए अपने <स्क्रिप्ट> इस तरह का संदर्भ:
    <स्क्रिप्ट प्रकारपाठ/जावास्क्रिप्ट"=" एसआरसी="QuizUtil.js" डेटा-कवर></स्क्रिप्ट>

Blanket.js को "डेटा-आवरण" विशेषता ऊपर उठाता है और अपने जादू करता है।  यह Qunit में हुक, "कवरेज को सक्षम करें" विकल्प जोड़ने के लिए यूआई अद्यतन करता है और voila!

सारांश (TL; डॉ.)

लिखने के अपने परीक्षण के मामलों के लिए Qunit का उपयोग करें.

  • यह डाउनलोड करें
  • यह आपके प्रोजेक्ट के लिए जोड़ें
  • लिखने के एक परीक्षण हार्नेस पृष्ठ
  • अपने परीक्षण बनाएँ
    • Testable किया जा करने के लिए अपने कोड के कुछ refactor
    • रचनात्मक होना!  पागल के बारे में सोचो, असंभव परिदृश्यों और उन्हें वैसे भी परीक्षण.

कवरेज सुनिश्चित करने के लिए blanket.js का उपयोग करें

  • सुनिश्चित करें कि Qunit कार्य कर रहा है
  • Blanket.js डाउनलोड और यह आपके प्रोजेक्ट के लिए जोड़ें
  • यह अपने टेस्ट हार्नेस पेज जोड़ें:
    • Blanket.js के लिए एक संदर्भ जोड़ें
    • एक "डेटा-आवरण" विशेषता को जोड़ने अपने <स्क्रिप्ट> टैग
  • भागो अपने Qunit परीक्षण.

मैं कभी इस से पहले के किसी भी किया था और कुछ मामूली सामान घंटे की एक मुट्ठी भर में काम कर रहा था। 

खुश परीक्षण!

</अंत>

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

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin

Lists.asmx, GetList और 'मान रिक्त होना नहीं कर सकते”

मुझे आज पता चला कि GetList() विधि में lists.asmx वेब सेवा बहुत ही सावधानी से कहा जा करने के लिए है या यह एक रहस्यमय "मान रिक्त हो सकता" अपवाद फेंक करने के लिए प्रवण है (और कि आप अतीत भी बदतर जेनेरिक त्रुटि संदेश प्राप्त कर सकते हैं संभालने है, "प्रकार की अपवाद ' Microsoft.SharePoint.SoapServer.SoapServerException’ फेंक दिया गया था.")  विशेष रूप से, मैंने पाया है कि आप GetList पद्धति पर उपसर्ग की किसी भी तरह प्रदान नहीं कर सकते।  निम्नलिखित jQuery स्निपेट दिखाता है बात:

image

यदि आप कि क्या, वेब सेवा का जवाब है "मान के अनुसार यह बातिल हो नहीं कर सकता के साथ" सारंगी बजानेवाला-HTTP प्रतिलेख प्रदान की:

<?xml संस्करण "1.0 =" एन्कोडिंग = "utf-8"?>
  <साबुन:लिफ़ाफ़ा
     xmlns:साबुन ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi = "
http://www.w3.org/ 2001/xml स्कीमा-उदाहरण
     xmlns:xsd ="
http://www.w3.org/ 2001/xml स्कीमा">

  <साबुन:शरीर>
    <साबुन:गलती>
      <faultcode>साबुन:सर्वर</faultcode>
      <faultstring>
        अपवाद प्रकार का ' Microsoft.SharePoint.SoapServer.SoapServerException’ फेंका था.
      </faultstring>
      <विस्तार>
        <errorstring xmlns ="
http://schemas.microsoft.com/sharepoint/soap/">
मान रिक्त नहीं हो सकता.
        </errorstring>
      </विस्तार>
    </साबुन:गलती>
  </साबुन:शरीर>
</साबुन:लिफ़ाफ़ा>

बेशक, तुम्हें शायद कि "s0" उपसर्ग अपने दम पर जोड़ नहीं होता, लेकिन कुछ उपकरण यह करने के लिए प्रवण हैं (ग्रहण की तरह).

यह सब अधिक भ्रामक है / निराशा होती है क्योंकि अन्य विधियों को उपसर्ग सहन।  उदाहरण के लिए, इस GetListCollection विधि यदि यह prefixed किया गया है मन नहीं करता, "xyzzy" की तरह भी बकवास उपसर्गों के साथ:

image

यह "मूल्य नहीं हो सकता नल है" तो उम्मीद है कि यह मदद मिलेगी किसी को बाहर भविष्य में lists.asmx के साथ काफी आम लगता है.

</अंत>

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

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin

अंतहीन को नेस्ट करना <div> टैग और jQuery

यह ऐसी एक oddball विषय की तरह लगता है, मुझे यकीन है कि यह वास्तव में के बारे में ब्लॉगिंग के लायक है नहीं कर रहा हूँ, लेकिन कि कभी नहीं से पहले मुझे बंद कर दिया है, तो यहाँ हम चले मुस्कुराओ

मैं जहाँ मैं एक खोज से कुछ डेटा खींच रहा हूँ एक परियोजना पर काम कर रहा हूँ, यह एक XML संदेश और उसके बाद उस XML में पैकेजिंग अंततः XSLT के माध्यम से HTML में तब्दील है।  JQuery का एक बहुत कुछ शामिल है, जो की एक बिट कुछ tabbing कार्यक्षमता लागू करता है।  जब आप कोई टैब पर क्लिक करें (वाक़ई, एक <div>), .hide jQuery invokes() और .show() पर विभिन्न divs (तो इस मामले में कोई postbacks वहाँ रहे हैं के लिए प्रारंभिक पृष्ठ लोड सभी सामग्री डाउनलोड).

घंटे पहले की एक गुच्छा, टैब स्विचन तर्क erratically व्यवहार करना शुरू कर दिया और यह मेरी टैब्स में से एक दिखाना नहीं होता।  मैं अंततः के लिए नीचे इस तथ्य यह है कि इंटरनेट एक्सप्लोरर ट्रैक (कम से कम) सोचा कि <div> टैग तक नेस्ट किया हुआ, इरादा की तुलना गहराई तक।डेवलपर उपकरण पट्टी दिखाना होगा:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <-अंत में यह दिखा रहा है यहाँ नीचे सभी तरह बंद हो गया था!

तो, अगर मैंने किया था एक $("#Tab1Content").छिपाएँ(), मैं भी Tab2 छिपा होगा और मैं अगर मैं भी Tab1 शो फ्लॉप Tab2 कभी नहीं दिखा सकता है।  मैं नकल की है और दृश्य स्टूडियो और इसे ऊपर div अस्तर के सभी अच्छी तरह से पता चला में कोड चिपकाया, की तरह वे कर रहे हो करने के लिए चाहिए थे, इस तरह की तलाश:

-<div id = "Tab1Content">
  +<div>
  +<div>
-<div id = "Tab2Content">
  +<div>
  +<div>

मैं थोड़ी देर के लिए दीवार के खिलाफ मेरे सिर को हरा और देखा था कि वास्तविक HTML में खाली के एक बहुत कोड जनरेट कर रहा है <div> टैग, की तरह:

<शरीर>

  <div id = "Tab1Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

  <div id = "Tab2Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

</शरीर>

(इसके बाद के संस्करण waaaaaaaaaaaay oversimplified है।  खाली div टैग पूरी तरह से मान्य हैं. उनमें से कुछ मेरे <div> टैग सामग्री से भरा रहे थे, लेकिन कई और अधिक नहीं थे।  मैं साकार करने आया था कि मेरी <xsl:के लिए प्रत्येक> निर्देशों के लघु-रूप उत्सर्जक थे div टैग जब xsl:के लिए प्रत्येक नहीं था ' किसी भी डेटा को खोजने।  मैं एक HTML टिप्पणी आउटपुट में मजबूर, के रूप में दिखाया गया:

image

 

करने के बाद मैंने किया है कि, सभी div को अच्छी तरह से तैयार किया और मेरी टैब स्विचन काम शुरू कर दिया.

हमेशा की तरह, मुझे आशा है कि इस मदद करता है किसी को एक चुटकी में.

</अंत>

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

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin

एक कारण के लिए "इस गलती के निर्माता एक कारण निर्दिष्ट नहीं किया है।”

मैं बहुत SharePoint खोज हाल ही में और विशेष रूप से KeywordQuery वर्ग के साथ काम कर रहा हूँ, गुण और पद्धतियाँ.

यदि आप सामान्य संदिग्ध परे परिणाम देने के लिए सेट परिणाम चाहते हैं (यहाँ देखें), आप इसे SelectedProperties संग्रह करने के लिए जोड़ें, के रूप में:

myKeywordQuery.SelectProperties.Add("xyzzy");

बहुत धन्यवाद और एक टिप के लिए hat के कोरी Roth और इस अत्यधिक उपयोगी ब्लॉग पोस्ट (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

मेरे मामले में, "xyzzy" वास्तव में एक प्रबंधित गुण नहीं है।  जब मैं इसे SelectedProperties करने के लिए वैसे भी जोड़ा, SharePoint फेंक दिया मेरी पसंदीदा में से एक कभी रनटाइम अपवाद:

"इस गलती के निर्माता एक कारण निर्दिष्ट नहीं किया."

मैं विशेष रूप से राजधानी "R" कारण में पसंद है।  यह मुझे करने के लिए .NET के समकक्ष की तरह लगता है'मैं कोई मुँह है, और मैं चीख अवश्य.”

</अंत>

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

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin

काम संदर्भ: KeywordQuery खोज से डिफ़ॉल्ट परिणाम

जब आप चलाएँ आह्वान() एक KeywordQuery पर विधि, तुम एक ResultTable ResultType.RelevantResults पर आधारित बना सकते हैं।  इस कोड का टुकड़ा दिखाता है कि मैं क्या मतलब:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

परिणामी तालिका जानकारी के कॉलम के बाद होगा: 

कार्य Id
रैंक
शीर्षक
लेखक
का आकार
पथ
विवरण
लिखना
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

मैं इस सूची से किसी SharePoint से व्युत्पन्न 2010 पर्यावरण, एंटरप्राइज़ संस्करण।  उम्मीद है कि यह भविष्य में किसी के लिए आसान हो जाएगा.

</अंत>

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

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin

एक कारण के लिए: "समाधान में टैक्सी फ़ाइल निकालने में विफल”

परियोजना के एक दृश्य स्टूडियो वेब भाग पर कार्य करते हुए आज, मैंने कुछ फ़ाइलों को _layouts फ़ोल्डर में परिनियोजन की प्रक्रिया के हिस्से के रूप में डाल करने के एक मामूली पुन org किया. विशेष रूप से, मैं "TypeAhead करने के लिए"TypeAhead.js"से किसी. js फ़ाइल का नाम(पुराने).जे एस"  मैं इसे हटाने के रूप में जल्दी के रूप में अपने उत्तराधिकारी "TypeAhead.js" सही साबित होता है के लिए योजना है।  इसे इस तरह से देखा:

image

यह तुरंत दृश्य स्टूडियो के साथ किसी समस्या के कारण जब प्रोजेक्ट को परिनियोजित करने की कोशिश की:

परिनियोजन 'समाधान जोड़ें' चरण में त्रुटि उत्पन्न हुई: समाधान में cab फ़ाइल को निकालने के लिए विफल.

यह पता चला है कि आप फ़ाइल नाम में एक लघु कोष्ठक डाल नहीं करना चाहिए।  मैं हटा parens और कि समस्या का हल.

</अंत>

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

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin