我遇到与上一张海报相同的问题,我需要在页面加载之前设置会话变量。因为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
答案 0 :(得分:0)
首先,您的HiddenField ClientIdMode
属性应为static
。然后你可以像这样得到HiddenField:
HidddenField hdn = this.Page.FindControl("gridViewOpenOrders").FindControl("hiddenFieldOrderID") as HiddenField