【问题标题】:Enable/disable a CheckBox column on edit/update在编辑/更新时启用/禁用 CheckBox 列
【发布时间】:2015-12-05 04:38:30
【问题描述】:

我有一个像这样的 CheckBox 列的网格:

我只想在编辑时启用选定行“e”的复选框,并在更新/取消后禁用。这是我尝试过的:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    try
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            ((CheckBox)e.Row.FindControl("chkStatus")).Enabled = false;
        }
    }
    catch
    {

    }
}

这是为了在更新/编辑时启用复选框:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    int index = Convert.ToInt32(e.CommandArgument);
    GridViewRow gvRow = GridView1.Rows[index];

    if (e.CommandName == "Edit" || e.CommandName == "Update")
    {
        ((CheckBox)gvRow.FindControl("chkStatus")).Enabled = true;
    }
    else if (e.CommandName == "Cancel")
    { 
    }
}

但问题是每次编辑/更新后,RowDataBound 都会触发并再次禁用 CheckBox。

我怎样才能避免这种情况?

【问题讨论】:

  • 为什么RowDateBound 会火?因为你DataBind 网格又来了?然后要么不这样做,要么再次加载现在应该包含更新值的数据源,所以Enabled=true
  • 是的 .. 我再次触发 databind() .. 感谢您的提示

标签: asp.net gridview checkbox


【解决方案1】:

好的,找到了解决办法。

只需更改为:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowState != DataControlRowState.Edit)
    {
        // Here logic to apply only on initial DataBinding...
    }
}

【讨论】:

    猜你喜欢
    • 2011-11-13
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 2019-02-15
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多