0

我有与以前的海报相同的问题,我需要在页面加载之前设置会话变量。因为 pageload 在我的 gridview.RowCommand 之前触发,所以我尝试使用下面文章中的这个方法,它结合了隐藏字段的使用。我的最终目标是删除 onRowCommand 事件并使用文章中介绍的解决方案。我一直在使用 firebug 来调试我的 javascript,但是每次当我查看 this.parent 时出现“未定义”错误(这是一个 td,this.parent 应该是 tr)。根据萤火虫, this.parent.cells[2].textContent 是我得到我想要的 OID 值的方式。由于我花很少时间编写 javascript,任何帮助将不胜感激。

来自 JS 的问题代码行

this.parent.cells[2].textContent

我的网格视图

<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)

研究: 在 asp:Button 中触发 AutoPostBack 之前设置会话变量

4

1 回答 1

0

首先,您的 HiddenFieldClientIdMode属性应该是static. 然后你可以像这样得到 HiddenField:

HidddenField hdn = this.Page.FindControl("gridViewOpenOrders").FindControl("hiddenFieldOrderID") as HiddenField
于 2012-07-30T19:37:51.283 回答