通过Javascript将值从Gridview传递到Hiddenfield返回null

时间:2016-09-06 19:50:12

标签: javascript c# asp.net

我将字段值传递给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的其他方法。

2 个答案:

答案 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();