【问题标题】:How to change the value of a Hidden Field in a Gridview using Javascript?如何使用 Javascript 更改 Gridview 中隐藏字段的值?
【发布时间】:2010-09-25 13:08:49
【问题描述】:

好的,我需要更改网格视图中隐藏字段的值,这是我目前所拥有的:

for(var i = 0; i < gv_Proofs.rows.length; i++)
{
    var tbl_Cell = gv_Proofs.rows[i].cells[0];
    var sdiFound = false;

    for(var x = 0; x < tbl_Cell.childNodes.length; x++)
    {
        if(tbl_Cell.childNodes[x].id == "_ctl0_MasterContentPlaceHolder_gv_Proofs__ctl2_lbl_SDI")
        {
            if(tbl_Cell.childNodes[x].innerHTML == sdi)
                sdiFound = true;
        }
        if(tbl_Cell.childNodes[x].id == "_ctl0_MasterContentPlaceHolder_gv_Proofs__ctl2_lbl_Updated" && sdiFound)
            tbl_Cell.childNodes[x].value = "true";
    }
}

谁能告诉我我做错了什么?谢谢!

【问题讨论】:

    标签: c# javascript gridview hidden-field


    【解决方案1】:

    我让它工作了。上面的循环工作正常,但显然我的 sdi 值并不总是正确设置,因此我检查的值总是设置为 false。因此,如果有人再次遇到此问题,上述方法在我的情况下非常有效。

    【讨论】:

      【解决方案2】:

      只有当 childNode id 是(截断的)lbl_SDI 时,您的第一个语句才是正确的。 仅当第一个语句为真(通过 sdiFound)并且 ID 为(截断)lbl_Updated 时,您的第二个语句才为真。

      所以第二个陈述永远不可能是真的。变量 sdiFound 仅在节点 ID 不是 lbl_Updated 时为真。

      我认为很多人可能不同意您也专门引用 .NET ID。您是否考虑过使用:

      <%= lbl_SDI.ClientID %>
      

      在你的 javascript 中?

      【讨论】:

        【解决方案3】:

        嗯,你能告诉我发生了什么吗?似乎您忘记将 sdiFound 变量重置为 false,或者在找到它时中断循环。

        就你的问题而言:

        如果您将隐藏的 html 输入作为服务器控件运行,那么它将由 GridView 显示,并且将具有唯一的 id。然后您可以使用 getElementById 找到它。您可以将其放入为您构建正确 id 的循环中,您应该能够找到您的控件。

        【讨论】:

          【解决方案4】:

          编辑:发帖前检查的经典案例。 Apparently 设置 hidden=true 实际上可以防止数据绑定,这就是 JS 出现问题的原因。 会说这是 ASP.NET 的典型问题之一,这让我诅咒它的名字,但 可能只是选择使用其中一种来调整控件googleable 解决方案。

          关于在 ASP.NET 中使用元素 ID 的评论保持不变,因为它是邪恶的。


          如果没有更多代码很难知道(什么时候准确执行?是否有其他东西覆盖它?标记是什么样的?)但我现在可以说,通过它的 ASP.NET 变形 ID 引用一个元素是不好的创意(TM)。

          如果可以的话,我建议您尝试在为您处理引用的代码隐藏中修改它,或者至少在其中写出您可以使用 clientID 的 JS。如果失败了,我会尝试通过扩展的元素搜索器(您自己的或库工具(如 jquery 等人的“$”函数))找到元素,这将允许您使用健壮的 CSS 或 Xpath 参数。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多