【问题标题】:asp.net check if checkbox in gridview is checkedasp.net 检查是否选中了gridview中的复选框
【发布时间】:2016-06-12 17:13:10
【问题描述】:

带有选择按钮、边界域和复选框的 Gridview。将数据绑定到gridview 工作正常。 (数据库中的数据有一个用于 bounfield 的 NVARCHAR 列和一个用于复选框的 BIT 列。

当通过“选择”按钮选择一行时,代码隐藏中的一个事件被触发,来自 gridview 的 2 个单元格的数据被复制到页面上的 2 个控件:一个文本框和一个复选框。

第一个工作正常,我不知道如何检查 gridview 中的复选框是否被选中。我需要知道这一点,以便我可以相应地填充其他复选框控件。

(在我粘贴我的代码之前:我只花了大约 12 个小时在 SO 和其他地方寻找解决方案。众多条目都没有帮助。所以请多多包涵……)

<asp:GridView ID="grv_Test1" runat="server" CssClass="myGrid"
    AutoGenerateColumns="False" DataKeyNames="Test1_First_Name"
    OnRowCommand="grv_Test1_RowCommand">
    <Columns>
        <asp:CommandField SelectText="sel'" ShowSelectButton="True" ControlStyle-CssClass="btn btn-primary myBtn-xs">
        </asp:CommandField>
        <asp:BoundField DataField="Test1_First_Name" HeaderText="Name"><HeaderStyle Width="85px" />
        </asp:BoundField>
        <asp:CheckBoxField DataField="Test1_Active" HeaderText="Active">
        </asp:CheckBoxField>
    </Columns>
    <HeaderStyle CssClass="myGridHeader" />
</asp:GridView>  

后面的代码:

int my_Data_From_Grid = Convert.ToInt32(e.CommandArgument);
txb_Test1_Name.Text = grv_Test1.Rows[my_Data_From_Grid].Cells[1].Text;            // this works

cbx_Test1_Active.Text = grv_Test1.Rows[my_Data_From_Grid].Cells[2].Text;          // NOT working

if (Convert.ToString(grv_Test1.Rows[my_Data_From_Grid].Cells[2].Text) == "1")     // NOT working either
   { cbx_Test1_Active.Checked = true; }
else
   { cbx_Test1_Active.Checked = false; }

if (Convert.ToString(grv_Test1.Rows[my_Data_From_Grid].Cells[2].Text) == "True")  // NOT working either
   { cbx_Test1_Active.Checked = true; }
else
   { cbx_Test1_Active.Checked = false; }

这是我在选择迈克尔的行时得到的:

在 gridview 中,Michael 处于“活动状态”,我需要“选中”顶部的复选框。
如何做呢...?非常感谢。

【问题讨论】:

    标签: asp.net gridview checkbox


    【解决方案1】:

    使用 CheckBoxFields 和 CheckBoxes,您需要获取 Checked 值才能知道它是否实际被选中。 Text 值实际上是 CheckBox 的另一个属性(请参阅 MSDN)。您有时会在 CheckBox 本身的左侧或右侧看到此文本。

    所以你需要做的是首先获取 CheckBox。然后使用该 CheckBox 的 Checked 属性。

    CheckBox checkBox = (CheckBox)grv_Test1.Rows[my_Data_From_Grid].Cells[2].Controls[0];
    cbx_Test1_Active.Checked = checkBox.Checked;
    

    【讨论】:

      【解决方案2】:
          protected void gvData_RowDataBound(object sender, GridViewRowEventArgs e)
          {
              if (e.Row.RowType == DataControlRowType.DataRow)
              {
                      CheckBox chkSelect = ((CheckBox)e.Row.FindControl("WasAudited"));
                  if (chkSelect.Checked)
                      chkSelect.Enabled = false;
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2016-08-20
        • 1970-01-01
        • 2012-02-09
        • 1970-01-01
        • 2013-10-28
        • 2014-02-07
        • 1970-01-01
        • 2013-02-15
        相关资源
        最近更新 更多