我有与以前的海报相同的问题,我需要在页面加载之前设置会话变量。因为 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)