2012-09-03 14 views
9

के अंदर बाध्यकारी ड्रॉपडाउनसूची मैं संपादन ड्रॉप टेम्पलेट में मौजूद मेरी ड्रॉपडाउन सूची को बाध्य करने में सक्षम नहीं हूं। जब मैं इसे एक्सेस करने का प्रयास करता हूं तो मुझे शून्य संदर्भ मिल रहा है।ग्रिडव्यू edititemtemplate

मेरे डिजाइन:

<asp:TemplateField HeaderText ="Category"> 
    <ItemTemplate > 
    <asp:Label ID="drpcategory" Text ='<%#Bind("category") %>' runat ="server" /> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:DropDownList ID="drpcategory1" AppendDataBoundItems="True" runat="server" > 
     </asp:DropDownList> 
    </EditItemTemplate> 
</asp:TemplateField> 

मेरे पीछे कोड:

protected void gv_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    gv_table1.EditIndex = e.NewEditIndex; 
    DropDownList drpcategory1 = ((DropDownList)gv_table1.Rows[e.NewEditIndex].Cells[8].FindControl("drpcategory1")); 
    //BindDropDown(drpcategory1); 
    dt = con.GetData("Select category_name from category"); 

    String str = gv_table1.Rows[e.NewEditIndex].FindControl("drpcategory1").GetType().ToString(); 
    //((DropDownList)gv_table1.Rows[e.NewEditIndex].Cells[8].FindControl("drpcategory1")).DataSource = dt; 
    drpcategory1.DataSource = dt; 
    drpcategory1.DataTextField = "category_name"; 
    drpcategory1.DataValueField = "category_name"; 
    drpcategory1.DataBind(); 

    this.setgrid(); 
} 

मैं नेट पर देख कोशिश की है और व्यर्थ में बहुत सी बातें की कोशिश की। मैं एएसपी के लिए नया हूँ। अग्रिम में धन्यवाद। मैं ड्रॉपडाउन को बाध्य करना चाहता हूं जब उपयोगकर्ता संपादन मोड में प्रवेश करता है।

+0

gv_table1 क्या है? मुझे लगता है कि यह मुद्दा हो सकता है। Pls – kbvishnu

+2

'सेल [8] का उपयोग न करें। FindControl ("drpcategory1") 'लेकिन' row.FindControl ("drpcategory1")' चूंकि 'नामकरणकंटनर' पंक्ति पंक्ति नहीं है। आपका रास्ता अधिक त्रुटि-प्रवण है। –

+0

मैं केवल पंक्ति.फिंड्रोल का उपयोग कर रहा हूं .मैंने भी कोशिकाओं का उपयोग किया है। मैंने दोनों की कोशिश की लेकिन वांछित परिणाम नहीं मिला। – Prashanth

उत्तर

30

कोड के पीछे: परीक्षण कोड और ड्रॉप-डाउन सूची संपादन मोड पर चयनित मान सेट

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if ((e.Row.RowState & DataControlRowState.Edit) > 0) 
     { 
      DropDownList ddList= (DropDownList)e.Row.FindControl("drpcategory1"); 
      //bind dropdown-list 
      DataTable dt = con.GetData("Select category_name from category"); 
      ddList.DataSource = dt; 
      ddList.DataTextField = "category_name"; 
      ddList.DataValueField = "category_name"; 
      ddList.DataBind(); 

      DataRowView dr = e.Row.DataItem as DataRowView; 
      //ddList.SelectedItem.Text = dr["category_name"].ToString(); 
      ddList.SelectedValue = dr["category_name"].ToString(); 
     } 
    } 
} 

protected void gv_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    gv.EditIndex = e.NewEditIndex; 
    gridviewBind();// your gridview binding function 
} 

विस्तृत ब्लॉग अनुच्छेद: How to bind drop-down list inside gridview edit template

+0

वांछित चीज़ आदमी मिला। लेकिन DataRowView dr = e.Row.DataItem DataRowView के रूप में; ddList.SelectedItem.Text = dr ["category_name"]। ToString(); इन दो पंक्तियों में मैंने इन दो पंक्तियों को निष्पादित करने में त्रुटि दिखाई दी और आउटपुट दोस्त प्राप्त किया। धन्यवाद ब्रो – Prashanth

+0

@प्रशांत: अगर यह मदद करता है तो अच्छा है, क्या आप पेस्ट कर सकते हैं त्रुटि संदेश आप उन पंक्तियों के लिए हो रही है। –

+0

दोस्त मैंने उस त्रुटि को सही किया, यह सिर्फ एक नामकरण समस्या थी, लेकिन अब ब्रो सब ठीक है लेकिन अब ड्रॉपडाउन सूची में पहला तत्व लेबल मान आदमी को फिर से लिखा जा रहा है जब संपादन मोड में (यानी) मुझे एक तत्व की पुनरावृत्ति होती है और हार भी होती है एक और। क्या आप समझते हैं कि मेरा क्या मतलब है। – Prashanth

0

घटना RowEditing एक पंक्ति संपादित होने से ठीक पहले होती है।

आपको इसके बजाय RowDataBound ईवेंट का उपयोग करना चाहिए।

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (gv.EditIndex == e.Row.RowIndex && 
     e.Row.RowType==DataControlRowType.DataRow) 
    {  
     DropDownList drpcategory1 = (DropDownList)e.Row.FindControl("drpcategory1"); 
     //bind the control 
    } 
} 
+0

Drpcategory1 मान केवल तभी होता है जब मैं डालूं ब्रेकपॉइंट और वैल्यू की जांच करें। मैंने आपके अनुसार बताया था। – Prashanth

0

आपको पंक्ति पंक्ति के लिए ड्रॉपडाउन नियंत्रण को बाध्य करने के लिए RowDataBound ईवेंट का उपयोग करना होगा। कृपया RowDataBound घटना में नीचे विधि का उपयोग करें।

 protected void gv_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowState == DataControlRowState.Edit) 
     { 
      DropDownList drpcategory1 = (DropDownList)e.Row.FindControl("drpcategory1"); 
      DataTable dt = con.GetData("Select category_name from category"); 
      drpcategory1.DataSource = dt; 
      drpcategory1.DataTextField = "category_name"; 
      drpcategory1.DataValueField = "category_name"; 
      drpcategory1.DataBind(); 
     } 
    } 

Hope this will help you. 
2
protected void gvProject_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     try 
     { 
      string Active = ""; 
      if (e.Row.DataItem != null) 
      { 
       if ((e.Row.RowState & DataControlRowState.Edit) > 0) 
       { 
        Label lblEditActive = (Label)e.Row.FindControl("lblUP_ET_ActiveStatus"); 
        if (lblEditActive.Text != string.Empty) 
        { 
         Active = lblEditActive.Text.Trim(); 
        } 

        DropDownList ddlActive = (DropDownList)e.Row.FindControl("ddlUP_ET_ActiveStatus"); 
        ddlActive.Items.Clear(); 
        ddlActive.Items.Add("True"); 
        ddlActive.Items.Add("False"); 
        ddlActive.DataBind(); 
        ddlActive.Items.FindByText(Active).Selected = true; 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    }  
संबंधित मुद्दे