2009-01-22 9 views
6

मेरे पास एक सूची दृश्य है जो LinqDataSource से जुड़ता है और चयनित स्थानों को प्रदर्शित करता है। सम्मिलित आइटम में एक ड्रॉपडाउन सूची होती है जो सभी अचयनित स्थानों को देने के लिए किसी अन्य LinqDataSource से खींचती है। इस तरह के Eval (के रूप मेंListView InsertItemTemplate में ड्रॉपडाउनलिस्ट को बाध्य करना एक त्रुटि फेंकना

Databinding विधि) XPath(), और बाइंड() को केवल डेटाबाउंड नियंत्रण के संदर्भ में इस्तेमाल किया जा सकता:

समस्या यह है कि मैं निम्न त्रुटि जब पेज लोड हो रहा है प्राप्त है।

मैं वेबसाइट के किसी अन्य पृष्ठ में एक बहुत ही समान सेटअप कर रहा हूं, और यह हमें यह त्रुटि नहीं दे रहा है इसलिए मैं बहुत उलझन में हूं। मुझे पता है कि मैं इसे बाध्यकारी नहीं कर सकता, मैन्युअल रूप से नियंत्रण ढूंढ रहा हूं और मूल्य प्राप्त कर सकता हूं, लेकिन यह काम करना चाहिए और मुझे समझ में नहीं आता कि यह क्यों नहीं है।

कोई विचार?

स्रोत कोड का बेहतर हिस्सा नीचे है।

<asp:LinqDataSource ID="ldsLocations" runat="server" 
    ContextTypeName="ClearviewInterface.ESLinqDataContext" EnableDelete="true" EnableInsert="true" 
    OnInserting="ldsLocations_Inserting" OnDeleting="ldsLocations_Deleting" 
    TableName="crmLocations" OrderBy="addr1" OnSelecting="ldsLocations_Selecting" /> 

<asp:LinqDataSource ID="ldsFreeLocations" runat="server" 
    ContextTypeName="ClearviewInterface.ESLinqDataContext" OrderBy="addr1" 
    TableName="v_CVLocations" OnSelecting="ldsFreeLocations_Selecting" /> 

<asp:ListView ID="lvLocations" DataSourceID="ldsLocations" DataKeyNames="ID" InsertItemPosition="LastItem" runat="server" > 

<InsertItemTemplate> 
     <tr> 
      <td colspan="6"><hr /></td> 
     </tr> 
     <tr> 
      <td colspan="2"> 

       <asp:DropDownList ID="ddlFreeLocations" DataSourceID="ldsFreeLocations" DataTextField="addr1" 
             DataValueField="record" MarkFirstMatch="true" SelectedValue='<%# Bind("record") %>' 
             runat="server" /> 
      </td> 
      <td><asp:ImageButton ID="btnAdd" CommandName="Insert" SkinID="Insert" runat="server" /></td> 
     </tr> 

    </InsertItemTemplate> 
+0

ड्रापडाउन के SelectedValue में आबद्ध न काम करता है जब DropDownList सूचीदृश्य में है ... जैसा कि आप ने कहा कि आप किसी अन्य वेबसाइट है, जिसमें एक ही सेटअप काम कर रहा है ... क्या आपने केवल लिस्टव्यू में या फॉर्मूव या ग्रिडव्यू में ड्रॉपडाउन रखा है ??? मैंने बहुत सारे ब्लॉग खोजे क्योंकि मुझे एक ही समस्या हो रही है। लेकिन मुझे केवल एक सोलन मिला। आइटम को प्रदर्शित करने के लिए इवल का उपयोग करें और आइटम सम्मिलन और आइटम में "डालने" या "अपडेट करें" कोड को – Radhi

+0

अद्यतन करें यदि आपको कोई सोलन मिलता है। सूचीदृश्य के अंदर ड्रॉपडाउन में बाध्यकारी करने के लिए ... कृपया इसे मुझे भी प्रदान करें ... – Radhi

उत्तर

2

इस सूत्र http://forums.asp.net/t/1187425.aspx

पर एक नजर डालें मूल रूप से आप बाइंड सिंटैक्स का उपयोग नहीं कर सकते क्योंकि InsertItemTemplate अंदर नियंत्रण केवल "एक तरह से" कर रहे हैं। मान प्राप्त करने के लिए पीछे कोड का प्रयोग करें।

0

मुझे एक समान समस्या है। यदि आप उस फ़ील्ड के मान को अपडेट नहीं कर रहे हैं तो इसके बजाय #Eval का उपयोग करने का प्रयास करें।

5

जैसा कि Joteke's Blog पर बताया गया है, यहां उद्धृत समाधान है।

क्या आप नियंत्रण को बांधने के लिए <%#Eval("field")%> अभिव्यक्ति का उपयोग कर रहे हैं? यदि आप इसे <%#DataBinder.Eval(Container.DataItem,"field")%> पर बदलते हैं, क्या यह त्रुटि को ठीक करने लगता है?

+0

इस लिंक ने मेरी समस्या हल की। धन्यवाद। –

+0

हां! यह मेरी समस्या थी जहां मैंने उप-नियंत्रण बनाने के लिए 'eval (666)' का उपयोग किया था और एक शून्य मूल्य एक धब्बा फेंकता था। मैंने '<% # डेटाबिंडर.एवल (कंटेनर। डेटाटाइम, "फ़ील्ड")%>,' 'का इस्तेमाल किया और यह समस्या हल हो गई क्योंकि तब मेरे उप नियंत्रण ने नल को संभाला और नशे में मोनकी की तरह नहीं गिर गया। पीएस मैंने आपका जवाब अपडेट किया क्योंकि लिंक केवल जवाब खराब हैं ... लिंक के पीछे की सामग्री एक दिन गायब हो सकती है। – ppumkin

0

मैंने इसे प्रबंधित किया है। मेरे पास एक SQLDataSource के साथ एक फॉर्मव्यू है और फ़ॉर्म व्यू पर SQLDataSource के साथ एक ड्रॉपडाउन सूची है।

जब कोई नया रिकॉर्ड अनुरोध किया जाता है तो मैं डेटा स्रोतों के लिए चयन आदेशों को फिर से जारी करता हूं - ड्रॉपडाउन सूची स्रोत विकल्पों की एक सूची प्रदान करता है जबकि फॉर्मव्यू डेटासॉर कुछ भी नहीं देता है।

फिर मैं फॉर्मब्यू और ड्रॉपडाउनलिस्ट दोनों पर डेटाबिंड() का उपयोग करता हूं और सब ठीक है।

मैं ASP.Net के लिए नया हूँ, लेकिन यह है कि मैं क्या चाहता हूं मेरे लिए काम है और मुझे अनुमति दे रहा है - dropdownlist पर उपयोग बाइंड और FormView

मुझे आशा है कि इस मदद करता है नाथन

पर बक्सें
0

# औसत के साथ बाध्यकारी सही समय पर सुनिश्चित करने के लिए DataBinder.Eval() का उपयोग करने के लायक हो सकता है।

1

ऐसे परिदृश्य के लिए, हम निम्नलिखित प्रस्तावों पर विचार कर सकते हैं:

  1. भीतरी नेस्टेड नियंत्रण के लिए, डेटा बाइंडिंग के बजाय, हम अन्य विधियों का उपयोग अपने आइटम को भरने के लिए। उदाहरण के लिए, हम डाटाबेसिंग के बजाय ड्रॉपडाउन सूची में आइटम जोड़ने के लिए लूप का उपयोग कर सकते हैं। इस प्रकार, <% # ...%> अभिव्यक्ति का मूल्यांकन नहीं किया जाएगा।

  2. हम कंटेनर विवरण दृश्य नियंत्रण पर भी परिवर्तन कर सकते हैं। <% #%> अभिव्यक्ति के बजाय, हम कुछ आंतरिक ईवेंट पर डेटा आइटम को पॉप्युलेट करने के लिए मैन्युअल रूप से "RowDataBound" जैसे कुछ ईवेंट का उपयोग कर सकते हैं। और जब अद्यतन/सम्मिलित करते हैं, उचित घटना में नियंत्रण से मूल्यों को मैन्युअल रूप से निकालें (जैसे आइटम अपडेटिंग या आइटमइन्सर्टिंग ...)।

स्रोत: http://blogs.msdn.com/b/stcheng/archive/2009/01/15/aspnet-system-invalidoperationexception-databinding-methods-such-as-eval-xpath-and-bind-can-only-be-used-in-the-context-of-a-databound-control-error-in-nested-databinding-scenario.aspx

0

इस काम करेंगे

protected void lstCompContctPerson_ItemCreated(object sender, RadListViewItemEventArgs e) 
     { 

     if ((e.Item != null) && (e.Item.ItemType == RadListViewItemType.InsertItem)) 
     { 
      System.Web.UI.Control ddlCompNames = e.Item.FindControl("ddlCompNames"); 

      (ddlCompNames as RadDropDownList).DataSource = (from _company in objshortcut.GetAllCompanies() 
      select new 
      { 
        CompanyID = _company.CompanyID, 
        CompContctName = _company.CompanyName 
      }).Distinct(); 

     } 
    } 
+0

कृपया बताएं कि यह क्यों काम करना चाहिए – slecorne

संबंधित मुद्दे