【问题标题】:Getting gridview checked boxes获取gridview复选框
【发布时间】:2017-10-06 13:21:28
【问题描述】:

我有这个模板字段

        <asp:TemplateField ItemStyle-Width="40px">
                    <HeaderTemplate>
                        <asp:CheckBox ID="chkboxSelectAll" runat="server" AutoPostBack="true" OnCheckedChanged="chkboxSelectAll_CheckedChanged" />
                    </HeaderTemplate>
                    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                    <ItemTemplate>
                        <asp:CheckBox ID="chkEmp" runat="server"></asp:CheckBox>
                    </ItemTemplate>
                </asp:TemplateField>      
        <asp:TemplateField ShowHeader="False">

在代码隐藏中我有这个代码:

        protected void chkboxSelectAll_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox ChkBoxHeader = (CheckBox)grdGeral.HeaderRow.FindControl("chkboxSelectAll");
            foreach (GridViewRow row in grdGeral.Rows)
            {
                CheckBox ChkBoxRows = (CheckBox)row.FindControl("chkEmp");
                if (ChkBoxHeader.Checked == true)
                {
                    ChkBoxRows.Checked = true;
                }
                else
                {
                    ChkBoxRows.Checked = false;
                }
            }

        }

    protected void btnLista_Click(object sender, EventArgs e)
    {
        string strEmailTotal = "";
        string strEmail = "";


        foreach (GridViewRow row in grdGeral.Rows)
        {
                CheckBox chkBx = (CheckBox)grdGeral.FindControl("chkEmp");
                if (chkBx != null)
                {
                    if (chkBx.Checked)
                    { 
                    strEmail = ((Label)grdGeral.FindControl("lblEmail")).Text;
                    strEmailTotal = strEmailTotal + "," + strEmail;
                }
                }
        }

        lblMail.Text = strEmailTotal ;
    }

即使我在模板字段中将默认值设置为“true”,我也总是得到复选框的空值。谁能帮我这个? 谢谢

【问题讨论】:

  • 你能显示整个 grdGeral 的标记吗?
  • 看起来grdGeral.FindControl 真的应该是row.FindControl
  • Andrei 我尝试了你的建议,它奏效了。非常感谢

标签: c# asp.net gridview checkbox


【解决方案1】:

试试这个解决方案。

foreach (GridViewRow row in grdGeral.Rows)
{
CheckBox chkBx = row.FindControl("chkEmp") as CheckBox ;
}

【讨论】:

    【解决方案2】:

    在您的btnLista_Click 事件中,您应该使用row 而不是grdGeral
    CheckBox chkBx = (CheckBox)row.FindControl("chkEmp");
    和下面一样:

    strEmail = ((Label)row.FindControl("lblEmail")).Text;
    

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 2017-11-03
      • 2017-01-16
      • 1970-01-01
      • 2012-10-25
      • 2011-04-25
      • 2012-09-23
      相关资源
      最近更新 更多