2016-03-01 76 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

感谢您的回答,工作。 –