【问题标题】:Get checked value of checkbox inside a GridView获取 GridView 中复选框的选中值
【发布时间】:2017-01-16 22:00:20
【问题描述】:

我有一个从 XML 文件填充的 GridView。我在这个列表中添加了一个 id=chkRow 列。有超过 100 条记录/行。

我最终想要做的是将用户可以点击的行数/复选框限制为三个。

我已经成功地弄清楚了如何在每次更改复选框时增加一个整数 - 但即使我取消选中它也会继续增加。

所以现在,我想做的是在选定行为 Checked=true 时递增,并在 Checked=false 时递减。

我无法弄清楚如何获得刚刚单击的复选框的选中状态。

当我单击任何复选框时,此代码会引发 NullReferenceException。

protected void MyCheckBoxes_SelectedIndexChanged(object sender, EventArgs e)
        {  
             CheckBox chk1 = (CheckBox)GridView1.HeaderRow.FindControl("chkRow");
                Label1.Text = mycount.ToString();
                if(chk1.Checked == true)

                       {
                           Increment();
                       }

        }

【问题讨论】:

  • 查看sender 对象。对于这样的事件,该对象是该事件所针对的控件。 More info.

标签: .net gridview checkbox


【解决方案1】:

试试这个。 (假设您的复选框位于第一列)

        private void dataGridView1_CellContentClick(object sender,DataGridViewCellEventArgs e)
        {
        int checks = 0;
        foreach (DataGridViewRow Row in dataGridView1.Rows)
        {
            if (Convert.ToBoolean(Row.Cells[0].Value) == true)
                checks++;
        }   
            if (checks == 3  && Convert.ToBoolean(dataGridView1.CurrentCell.Value == false)
                return;
        }

【讨论】:

    【解决方案2】:

    你可以找到复选框:

    int  checks=0;
     foreach (GridViewRow row in GridView1.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            CheckBox chkRow = (row.Cells[0].FindControl("chkRow") as CheckBox);
            if (chkRow.Checked)
            {
    
                    checks++;
            }   
                if (checks == 3)
                    return;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-11-03
      • 2018-06-15
      • 2012-03-06
      • 2011-03-02
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 2014-07-14
      • 2017-10-06
      相关资源
      最近更新 更多