我将字段值传递给Javascript,如下所示。
<asp:TemplateField>
<ItemTemplate>
<a href="JavaScript:divexpandcollapse('div<%# Eval("ClaimMasterId") %>');">
<img id='imgdiv<%# Eval("ClaimMasterId") %>' width="9px" border="0" src="Img1/plus.gif" alt="" title="Add Action Notes" /></a>
</ItemTemplate>
<ItemStyle Width="10px" VerticalAlign="Middle"></ItemStyle>
</asp:TemplateField>
使用Javascript:
<script type="text/javascript">
function divexpandcollapse(divname) {
debugger;
var div = document.getElementById(divname);
document.getElementById('<%= HiddenField1.ClientID %>').value = div;
var img = document.getElementById('img' + divname);
if (div.style.display == "none") {
div.style.display = "inline";
img.src = "Img1/minus.gif";
} else {
div.style.display = "none";
img.src = "Img1/plus.gif";
}
}
</script>
我在后面的代码上得到了隐藏字段值:
protected void ClearImageButton_Click(object sender, ImageClickEventArgs e)
{
string s = HiddenField1.Value;
}
假设,ClaimMasterId值为4507,然后在IE中调试Javascript时,我注意到传递的值是'div4507'但是在后面的值返回null值。我犯了错误的地方。任何人都可以指导我。
实际上,我正在使用带有javascript的展开折叠功能的gridview。在不使用SelectedIndexChanged事件的情况下,我试图使用javascript获取行值。 'ClaimMasterId'是每行的键值,所以如果我在用户点击'plus'图像时获得该值,这意味着扩展了gridview,那么我可以使用此Id更新相应行上的某些字段。是否有任何行在不使用SelectedIndexChanged事件的情况下获取Id的其他方法。
答案 0 :(得分:0)
我尝试使用此代码段,它的工作原理应该如下:
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<a href="JavaScript:divexpandcollapse('div<%# Eval("ClaimMasterId") %>');">
<img id="imgdiv<%# Eval("ClaimMasterId") %>" width="9" border="0" src="Img1/plus.gif" alt="" title="Add Action Notes" />Link</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<script type="text/javascript">
function divexpandcollapse(divname) {
document.getElementById('<%= TextBox1.ClientID %>').value = divname;
}
</script>
答案 1 :(得分:0)
经过一段艰难时期后,我撤回了javascript概念,并使用Datakeys使用了SelectedIndexChanged事件。
在Gridview中添加
DataKeyNames="ClaimMasterId"
在C#中
ClaimMasterIdHF.Value = (gvClaimMaster.DataKeys[gvClaimMaster.SelectedIndex].Values["ClaimMasterId"]).ToString();