好的,我需要改变一个网格视图中隐藏字段的值,这是我目前所做的:
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";
}
}有人能告诉我我哪里做错了吗?谢谢!
发布于 2008-12-05 20:17:12
我把它修好了。上面的循环工作正常,但显然我的sdi值并不总是正确设置的,因此我检查的值总是设置为false。因此,如果有人再次遇到这个问题,上面的方法在我的情况下工作得很好。
发布于 2008-12-05 15:49:11
编辑:发帖前检查的经典案例。 setting hidden=true实际上阻止了数据绑定,这将是JS出现问题的原因。 I 会说这是ASP.NET的典型问题之一,这让我咒骂它的名字,但<代码>E19您<代码>E210<代码>E111可能只是选择使用许多可搜索的解决方案之一来调整控件。<代码>E212
关于在ASP.NET中使用元素ID的评论保持不变,因为它是邪恶的。
如果没有更多的代码,很难知道(这到底是什么时候执行的?是不是有别的什么东西覆盖了它?标记是什么样子的?)但我现在可以说,通过一个元素的ASP.NET变形ID来引用它是一个糟糕的想法(TM)。
如果可以,我建议您尝试在为您处理引用的代码后台中修改它,或者至少在那里写出JS,在那里您可以使用clientID。如果做不到这一点,我会尝试通过一个扩展的元素搜索器--您自己的或者jquery等人的"$“函数之类的库util --来查找元素,这将允许您使用一个健壮的CSS或Xpath参数。
发布于 2008-12-05 15:50:47
只有当childNode id是(截断的) lbl_SDI时,第一条语句才是正确的。仅当第一条语句为真(通过sdiFound)且ID为(截断) lbl_Updated时,第二条语句才为真。
所以第二个陈述不可能是真的。只有当节点id不是lbl_Updated时,变量sdiFound才为真。
我想很多人可能也不同意你特别提到.NET ID的观点。您是否考虑过使用:
<%= lbl_SDI.ClientID %>在你的javascript中?
https://stackoverflow.com/questions/344212
复制相似问题