我遇到了与之前发帖人相同的问题,我需要在页面加载之前设置 session 变量。因为页面加载在我的 gridview.RowCommand 之前触发,所以我尝试使用在下面的文章中找到的这种方法,它结合了隐藏字段的使用。我的最终目标是删除 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
最佳答案
首先,您的 HiddenField ClientIdMode
属性应该是 static
。然后你可以像这样得到 HiddenField:
HidddenField hdn = this.Page.FindControl("gridViewOpenOrders").FindControl("hiddenFieldOrderID") as HiddenField
关于javascript - 使用javascript将值从td分配给asp.net hiddenfield,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728242/