使用javascript将值从td分配给asp.net hiddenfield

时间:2012-07-30 19:28:19

标签: javascript asp.net css vb.net

我遇到与上一张海报相同的问题,我需要在页面加载之前设置会话变量。因为pageload在我的gridview.RowCommand之前触发,所以我试图使用下面的文章中找到的方法,该方法结合了hiddenfield的使用。我的最终目标是删除onRowCommand事件并使用本文中提供的解决方案。我一直在使用firebug调试我的javascript,但每当我看到this.parent(这是一个td和this.parent应该是tr)时,我得到一个错误“未定义”。根据firebug,this.parent.cells [2] .textContent是我得到我想要的OID值的方法。因为我花了很少的时间来编写javascript,所以非常感谢任何帮助。

来自JS的问题代码行

this.parent.cells[2].textContent

我的GridView

<asp:GridView ID="gridViewOpenOrders" CssClass="gvOpenOrders" runat="server" AutoGenerateColumns="False"
            AllowPaging="True" RowStyle-BorderStyle="None"
            DataKeyNames="AccountNumber,OrderID"
            Width="802px" OnRowCommand="gridViewOpenOrders_RowCommand">
            <Columns>
                <asp:ButtonField Text="Select" HeaderStyle-Width="40px" ItemStyle-CssClass="assignOrderID"/>
                <asp:BoundField DataField="OrderDate" HeaderText="Date" SortExpression="OrderDate"
                    DataFormatString="{0:d}">
                    <HeaderStyle Width="100px" />
                </asp:BoundField>
                <asp:BoundField DataField="OrderID" HeaderText="OID" SortExpression="OrderID">
                    <HeaderStyle Width ="40px" />
                </asp:BoundField>             
            </Columns>
            <HeaderStyle CssClass="ColumnHeaders" />
            <RowStyle CssClass="ColumnRows" />
            <SelectedRowStyle BackColor="#D9D9FF" />
        </asp:GridView>

我的Javascript:

<script type="text/javascript">
    $(document).ready(function() {
        $(".assignOrderID").click(function () {
            var testing = $(".assignOrderID")
            alert(this.parent)
            alert(this.parent.cells[2])
            alert(this.parent.cells[2]).textContent
            document.getElementById('ContentPlaceHolder1_formViewOrder_hiddenFieldOrderID').value = this.parent.cells[2].textContent
            alert('hi2');
        });
    });
</script>

页面加载代码:

Dim t As HiddenField = formViewOrder.FindControl("hiddenFieldOrderID")
Session.Add("OrderID", t.Value)

研究: Setting a session variable before AutoPostBack fires in an asp:Button

1 个答案:

答案 0 :(得分:0)

首先,您的HiddenField ClientIdMode属性应为static。然后你可以像这样得到HiddenField:

HidddenField hdn = this.Page.FindControl("gridViewOpenOrders").FindControl("hiddenFieldOrderID") as HiddenField