【问题标题】:ASP Gridview when checkbox is selected store values in array选中复选框时的 ASP Gridview 将值存储在数组中
【发布时间】:2016-06-14 05:47:16
【问题描述】:

I have added a checkbox (chkCtrl) column into a gridview, when the checkboxes are selected i want to grab the email address that corresponds to that row and store all the results in a list or array.我希望在单击“发送电子邮件”按钮时发生这种情况。

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

【问题讨论】:

    标签: asp.net arrays gridview checkbox arraylist


    【解决方案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);
            }
        }
    }
    

    【讨论】:

    • 感谢 Rahul,试用了一下,效果不错。解决它的有效方法。
    【解决方案2】:

    您可以在 foreach 中使用 Row.Cells[index] 访问 BoundFields

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      相关资源
      最近更新 更多