ページをロードする前にセッション変数を設定する必要がある以前のポスターと同じ問題があります。pageload は gridview.RowCommand の前に発生するため、hiddenfield の使用を組み込んだ以下の記事にあるこのメソッドを使用しようとしています。最終的な目標は、onRowCommand イベントを削除し、この記事で紹介したソリューションを使用することです。私はjavascriptをデバッグするためにfirebugを使用していますが、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)