2012-06-04 14 views
8

मेरे पास एएसपी के अंदर एक ड्रॉपडाउन सूची है: दोहराना आइटम टेम्पलेट। मैं बटन क्लिक ईवेंट पर अपना मूल्य कैसे प्राप्त कर सकता हूं।एएसपी में नियंत्रण पाएं: बटन पर इवेंटेटर पर क्लिक करें

<asp:Repeater runat="server" ID="WorkflowListAfter" onitemcreated="WorkflowListAfterItemCreated"> 
    <ItemTemplate> 
     <asp:DropDownList ID="ddlWorkflowMembers" runat="server" DataTextField="MemberName" DataValueField="MemberID"> 
    </ItemTemplate> 
</asp:Repeater> 

protected DropDownList ddlWorkflowMembers = new DropDownList(); 
protected void WorkflowListAfterItemCreated(object sender, RepeaterItemEventArgs e) 
{ 
    ddlWorkflowMembers = (DropDownList) e.Item.FindControl("ddlWorkflowMembers"); 
} 
protected void BtnSaveClick(object sender, EventArgs e) { 
    if (ddlWorkflowMembers.SelectedItem == null) return; 
} 

कोड ऊपर पहली बार में, लेकिन पोस्टबैक ddlWorkflowMembers के बाद काम कर रहा है हमेशा अशक्त expersion है।

+0

हैं आप पोस्टबैक के बाद 'वर्कफ़्लो लिस्टएफ़टर। डेटाबाइंड()' कर रहे हैं? –

+0

संख्या। वर्कफ़्लो लिस्टएफ्टर इटिमक्रेटेड() {...} पर – mhesabi

उत्तर

20

मानते हैं कि BtnSave दोहराना के अंदर भी है।

आपको बटन NamingContainer कास्टिंग करके RepeaterItem मिलते हैं। तो फिर तुम FindControl उपयोग कर सकते हैं अपने DropDownList के संदर्भ में प्राप्त करने के लिए: बटन पुनरावर्तक से बाहर है

protected void BtnSaveClick(object sender, EventArgs e) { 
    var btn = (Button)sender; 
    var item = (RepeaterItem)btn.NamingContainer; 
    var ddl = (DropDownList) item.FindControl("ddlWorkflowMembers"); 
    // ... 
} 

और आप सभी आइटम को बचाने के लिए चाहते हैं, आप सभी के माध्यम से पाश की जरूरत है:

protected void BtnSaveClick(object sender, EventArgs e) { 
    foreach(RepeaterItem item in WorkflowListAfter.Items) 
    { 
     var ddl = (DropDownList) item.FindControl("ddlWorkflowMembers"); 
     // ... 
    }  
} 
संबंधित मुद्दे