2016-03-01 71 views
1

我已經添加了複選框(chkCtrl)列到gridview中,當選中複選框時,我想抓取與該行對應的電子郵件地址並將所有結果存儲在列表或數組。點擊「發送電子郵件」按鈕後,我希望發生這種情況。ASP Gridview當選中複選框時在數組中存儲值

的GridView代碼ASP.net

<asp:GridView CssClass="table table-hover" BorderWidth="2px" ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="GrabModuleID" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" > 
       <Columns> 
        <asp:CommandField EditText="" ShowSelectButton="True" SelectText="View Student Details" /> 
        <asp:BoundField DataField="StudentNo" HeaderText="Student Number" SortExpression="StudentNo" /> 
        <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" /> 
        <asp:BoundField DataField="UserID" HeaderText="UserID" SortExpression="UserID" Visible="false" /> 
        <asp:BoundField DataField="ModuleID" HeaderText="ModuleID" SortExpression="ModuleID" Visible="false" /> 
        <asp:TemplateField> 
        <ItemTemplate> 
         <asp:CheckBox ID="chkCtrl" runat="server" /> 
        </ItemTemplate> 
     </asp:TemplateField> 

發送電子郵件按鈕代碼:

<asp:Button ID="SendEmail" runat="server" class="btn btn-primary" Text="Send Class Email" OnClick="SendEmail_Click" /> 

回答

1

邏輯非常簡單。點擊按鈕時,只需遍歷gridview行並找到每行內的複選框即可。接下來,檢查該複選框是否已選中,然後查找電子郵件地址並將其存儲在集合中。

protected void SendEmail_Click(object sender, EventArgs e) 
{ 
    List<string> emails = new List<string>(); 
    foreach (GridViewRow row in grdCustomer.Rows) 
    { 
     CheckBox chkCtrl = row.FindControl("chkCtrl") as CheckBox; 
     if (chkCustomer.Checked) 
     { 
      cities.Add(row.Cells[1].Text); 
     } 
    } 
} 
+1

謝謝拉胡爾,嘗試了一下,並努力工作。有效的解決方法。 –

1

您可以在foreach訪問使用Row.Cells [指數]綁定列

foreach (GridViewRow row in GridView1.Rows) 
{ 
    Control controlcbx = row.Cells[6].Controls[1]; //control for checkbox 
    string email = row.Cells[2].Text; // email text 
    List<string> emailList = new List<string>(); //list to save emails 
    CheckBox cbx = controlcbx as Checkbox; 
    if(cbx.Checked) 
    { 
     emailList.Add(email); 
    } 
} 

驗證Cell [index]與您的BoundFields相匹配

+0

感謝您的回答,工作。 –