Asp.net 选中ASP Gridview复选框时,在数组中存储值

Asp.net 选中ASP Gridview复选框时,在数组中存储值,asp.net,arrays,gridview,checkbox,arraylist,Asp.net,Arrays,Gridview,Checkbox,Arraylist,我已经在gridview中添加了一个复选框(chkCtrl)列,选中这些复选框后,我想获取对应于该行的电子邮件地址,并将所有结果存储在列表或数组中。我希望在单击“发送电子邮件”按钮时发生这种情况 Gridview代码ASP.net <asp:GridView CssClass="table table-hover" BorderWidth="2px" ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID

我已经在gridview中添加了一个复选框(chkCtrl)列,选中这些复选框后,我想获取对应于该行的电子邮件地址,并将所有结果存储在列表或数组中。我希望在单击“发送电子邮件”按钮时发生这种情况

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" />

您可以使用foreach中的Row.Cells[index]访问边界字段

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);
     }
}
foreach(GridView1.Rows中的GridViewRow行)
{
Control controlcbx=行。单元格[6]。控件[1];//复选框的控件
字符串email=row.Cells[2].Text;//电子邮件文本
List emailList=new List();//保存电子邮件的列表
复选框cbx=控制cbx作为复选框;
如果(cbx.选中)
{
emailList.Add(电子邮件);
}
}

验证单元格[索引]是否与边界字段相匹配

逻辑非常简单。单击按钮,只需在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);
        }
    }
}
protectedvoid sendmail\u单击(对象发送者,事件参数e)
{
列表电子邮件=新列表();
foreach(grdCustomer.Rows中的GridViewRow行)
{
复选框chkCtrl=row.FindControl(“chkCtrl”)作为复选框;
如果(CHK客户已选中)
{
cities.Add(row.Cells[1].Text);
}
}
}

谢谢Rahul,尝试了一下,得到了一份款待。解决这个问题的有效方法。