2009-12-08 8 views
5

मैं एक सर्वर नियंत्रण लिख रहा हूं जो सुझावों के साथ एक खोज बॉक्स है (जब उपयोगकर्ता टाइपिंग शुरू करता है, मिलान करने वाले शब्द उनके चयन के लिए दिखाई देंगे)। मैं jquery और सी # का उपयोग कर रहा हूँ।कस्टम सर्वर नियंत्रण में JQuery को एम्बेड करने के लिए कैसे करें

नियंत्रण ठीक काम करता है जब मैं उस पृष्ठ पर jquery Lib शामिल करता हूं जिस पर मैं परीक्षण कर रहा हूं। हालांकि, जब मैं डीएलएल में lib को एम्बेड करने का प्रयास करता हूं तो यह काम नहीं करेगा।

मैं पूरी तरह से कोशिश की है में एम्बेड करके और स्क्रिप्ट को पंजीकृत:

ClientScriptManager manager = this.Page.ClientScript; 
manager.RegisterClientScriptResource(typeof(Search), jqueryResource); //jqueryResource= SearchControl.javascript.jquery.js 

और मैं भी सिर्फ इतना है कि jQuery शामिल पृष्ठ के शीर्षक में एक टैग जोड़ की कोशिश की हूँ:

string javascriptUrl = manager.GetWebResourceUrl(typeof(Search), jqueryResource); 
LiteralControl jquery = new LiteralControl(string.Format(javascriptInclude, jqueryUrl)); 
Page.Header.Controls.Add(jquery); 

दोनों नियंत्रणों से जानकारी प्राप्त करने का प्रयास करते समय जावास्क्रिप्ट त्रुटियों (ऑब्जेक्ट अपेक्षित) का कारण बनता है

var params = $("#searchBox").val(); //called on keyup when typing in textbox 

क्या किसी ने इससे पहले किया है? क्या यह संभव है? क्या कोई इस पर कुछ प्रकाश डाला सकता है?

पीएस: असेंबली पहले से ही AssemblyInfo.cs फ़ाइल में पंजीकृत हैं।

उत्तर

6

संपादित करें: बस अपना प्रश्न दोबारा पढ़ें और महसूस किया कि मैंने जो कुछ किया है उसे मैंने दोहराया है। हालांकि यह मेरा कार्यान्वयन है जो अपेक्षित काम करता है:

आपको RegisterClientScriptResource का उपयोग करने की आवश्यकता है। बस निम्नलिखित स्निपेट (मेरी ScriptRegisterHelper स्थिर वर्ग से लिया गया) नियंत्रण से पूर्वप्रस्तुत घटना में फोन:

protected override void OnPreRender(EventArgs e) 
{ 
    if (!this.DesignMode) 
    { 

     // Register the JavaScript libraries 
     ClientScriptManager cs = this.Page.ClientScript; 
     ScriptRegisterHelper.RegisterJQuery(cs); 

    } 
} 

और AssemblyInfo फ़ाइल:

/// <summary> 
/// Registers the jQuery client script to the page. 
/// </summary> 
/// <param name="cs">The ClientScriptManager to assign the script to.</param> 
internal static void RegisterJQuery(ClientScriptManager cs) 
{ 
    cs.RegisterClientScriptResource(typeof(ScriptRegisterHelper), 
     "MyProject.Resources.jquery.js"); 
} 

और पूरा करने के लिए, यहाँ implentation है

[assembly: System.Web.UI.WebResource("MyProject.Resources.jquery.js", "text/javascript")] 
+2

यह वही है जो मैंने शुरू में किया था और यह अभी भी काम नहीं करता था। फिर कुछ क्लिक किया, जबकि मैंने इसे विचार करना जारी रखा। मैंने स्क्रिप्ट फ़ाइल बनाने की कार्रवाई को देखा और अनुमान लगाया क्या? यह सही है, मैं इसे एक एम्बेडेड संसाधन के रूप में सेट करना भूल गया था (आपको लगता है कि जब आप असेंबली पंजीकृत करते हैं तो यह ऐसा करेगा)। वैसे भी, यह अब एक आकर्षण की तरह काम करता है। आपकी सहायताके लिए धन्यवाद! –

+0

मुझे पता था कि मुझे भी इसका उल्लेख करना चाहिए था! रवींद्र। – GenericTypeTea

+0

एंबेडेड होने के लिए संसाधन को सेट करने पर इस अनुस्मारक के लिए धन्यवाद। यह मुझे पागल कर रहा था। –