2009-03-05 9 views
8

के हेडर टेम्पलेट में नियंत्रण कैसे प्राप्त करूं, मैं अपने ग्रिड व्यू के शीर्षलेख में ड्रॉपडाउनलिस्ट चाहता हूं। मेरे कोड में मैं इसे एक्सेस नहीं कर सकता।मैं अपने ग्रिड व्यू

<asp:TemplateField SortExpression="EXCEPTION_TYPE"> 
    <HeaderTemplate> 
     <asp:Label ID="TypeId" runat="server" Text="Type" ></asp:Label> 
     <asp:DropDownList ID="TypeFilter" runat="server" AutoPostBack="true"> 
     </asp:DropDownList> 
    </HeaderTemplate> 
    ... 
</asp:TemplateField> 

यहाँ और जहां मैं नियंत्रण का उपयोग करने की कोशिश कर रहा हूँ के पीछे कोड में खंड है 'TypeFilter': यहाँ HeaderTemplate है।

protected void ObjectDataSource1_Selected(object sender, 
              ObjectDataSourceStatusEventArgs e) 
{ 
    DataTable dt = (DataTable)e.ReturnValue; 
    int NumberOfRows = dt.Rows.Count; 
    TotalCount.Text = NumberOfRows.ToString(); 
    DataView dv = new DataView(dt); 
    DataTable types = dv.ToTable(true, new string[] { "EXCEPTION_TYPE" }); 
    DropDownList typeFilter = (DropDownList)GridView1.FindControl("TypeFilter"); 
    typeFilter.DataSource = types; 
    typeFilter.DataBind(); 

} 

आप देखेंगे कि मैं DropDownList नियंत्रण का संदर्भ प्राप्त करने के लिए FindControl का उपयोग करने का प्रयास कर रहा हूं। यह कॉल नियंत्रण लौटने की बजाए शून्य हो जाती है। मैं नियंत्रण तक पहुंच कैसे प्राप्त करूं?

उत्तर

5
पुनरावर्तक के साथ

, आप HeaderTemplate आइटम FindControl का उपयोग करके OnItemDataBoundEvent में इस तरह का उपयोग:

RepeaterItem item = (RepeaterItem)e.Item; 
if (item.ItemType == ListItemType.Header) { 
    item.FindControl("control"); //goes here 
} 

GridViews के लिए इस काम के साथ-साथ करता है?

2
protected void ObjectDataSource1__RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.Header) 
     { 
      DropDownList typeFilter = (DropDownList)GridView1.FindControl("TypeFilter"); 
     } 
    } 
0
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
if (e.Row.RowType == DataControlRowType.Header) 
{ 
DropDownList ddlLocation = (DropDownList)e.Row.FindControl("ddlLocation"); 
ddlLocation.DataSource = dtLocation; 
ddlLocation.DataBind(); 
} 
} 
} 
2
private void GetDropDownListControl() 
    { 
     DropDownList TypeFilter = ((DropDownList)this.yorGridView.HeaderRow.FindControl("TypeFilter")); 
    } 
0

एक पंक्ति-डेटा-बाँध के बिना HeaderTemplate में एक नियंत्रण लगाने के लिए इस प्रयास करें, अगर है कि क्या जरूरत है:

private void Lab_1_GV1_Populate_SearchText() 
    { 
     GridView GV1 = (GridView)FindControl("Lab_1_GV1"); 
     TextBox TXB1 = (TextBox)GV1.HeaderRow.FindControl("Lab_1_TX2GV1"); 
    } 

धन्यवाद

रूचिर