设置单选按钮的Checked属性时出现问题

时间:2010-11-04 12:47:54

标签: c#

我在itemtemplet中设计了一个带有单选按钮的gridview。我也有一个确认按钮。允许用户检查几个单选按钮,当按下确认按钮时,数据库将使用单选按钮的值进行更新。

但是当我检查按钮时,它在UI中显示为已检查但当我检查后面的代码时,它会将单选按钮的已检查属性显示为false。

  for (int i = 0; i < gvTransaction.Rows.Count; i++)
  {
      if (!((String.IsNullOrEmpty(gvTransaction.Rows[i].Cells[0].Text)) || (gvTransaction.Rows[i].Cells[0].Text == "&nbsp;")))
      {
          string transactionID = gvTransaction.Rows[i].Cells[0].Text;
          RadioButton btn = (RadioButton)gvTransaction.Rows[i].FindControl("rbtSelect"); 
          if (btn.Checked)
          {
              // Although the radiobutton is checked code never reach here. 
          }
      }
  }

3 个答案:

答案 0 :(得分:2)

如果这是Winforms,我的猜测是因为编辑的单选按钮单元格值在被验证之前不会被提交,这在单元格失去焦点时发生。如果要立即提交修改,可以处理CurrentCellDirtyStateChanged事件,并在处理程序中调用CommitEdit方法,如下所示:

void gvTransaction_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    if (gvTransaction.IsCurrentCellDirty)
    {
        gvTransaction.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

答案 1 :(得分:2)

如果radiobutton.checkedchanged事件,请使用此选项。

答案 2 :(得分:1)

你如何绑定GridView?如果您在页面加载中执行此操作,请确保您没有在页面PostBacks上重新加载gridView

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //Bind GridView here } 

如果有这个帮助,请告诉我们