【问题标题】:Find ASP.NET WebForms Control and change its ID找到 ASP.NET WebForms 控件并更改其 ID
【发布时间】:2021-06-05 03:16:10
【问题描述】:

如何在后面的代码下方的蓝线上找到此复选框?

我试过这样使用 FindControl 方法:

CheckBox cb = (CheckBox)Page.FindControl("pendencia_count");

并且还尝试在GridView上查找,但结果始终为null。

网格上有一个循环,控件生成的 ID 相同。我需要动态更改它的 ID。

有没有更好的方法来做到这一点?

非常感谢!

【问题讨论】:

  • 你是怎么做循环的?如果您在每个 GridViewRow 中循环,会容易得多,特别是如果您在该行中只有一种类型的 Checkbox。

标签: c# asp.net checkbox webforms code-behind


【解决方案1】:

在绑定复选框控件时将其保存到 ViewState 中,并在需要更改其 ID 时从 ViewState 中获取复选框控件。

protected void grdPendenciasCliente_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        CheckBox cb = (CheckBox)e.Row.FindControl("pendencia_count");
        ViewState["CheckBoxPendenciaCount"] = cb;
    }
}

:
if (ViewState["CheckBoxPendenciaCount"] != null)
{
   CheckBox cb = (CheckBox)ViewState["CheckBoxPendenciaCount"];
}

【讨论】:

  • 我已经尝试过这种方式,但没有成功,不幸出现了找不到对象的错误。网格视图中似乎有几个分支会阻止您定位控件。
  • 我用 JobesK 提供的解决方案对其进行了更新,我认为应该可以。
【解决方案2】:

试试这个

            if (e.Row.RowType == DataControlRowType.Header)
        {
            CheckBox box = (CheckBox)e.Row.FindControl("pendencia_count");

            if(box != null)
            {
                box.ID = "yourid" + e.Row.RowIndex.ToString();
            }

        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2010-10-07
    • 2019-11-09
    相关资源
    最近更新 更多