ページAにサーバーコントロールボタンのクリックイベントでrequest.redirectにパラメーターをセットしページ遷移をした時に、
パラメーターの値をチェックし
ページBのデータが表示されたGridviewの詳細ボタンを押して、modalpopupExtenerでポップアップウインドウを表示したい。
ページBの現在の動き
Gridviewの詳細ボタンを押した時の動き
Gridviewのrowdataboundイベントで、詳細ボタンにclientscriptを設定し、
javascriptを呼び出し、隠しhiddenボタンをクリックするように書いています。
隠しhidenボタンはmodalpopupExtenderのtargetControlになっているので、詳細ボタンを押したタイミングでmodalpopupExtenderのパネルが表示されています。
具体的なソース
VB
1'ページA 2Response.Redirect("pageB.aspx?pram=1");
VB
1'ページB aspx 2 <asp:GridView ID="Grid_view" runat="server" DataSourceID="main" 3 OnRowCreated="Grid_view_RowCreated" 4 OnRowDataBound="Grid_view_RowDataBound" 5 AutoGenerateColumns="False"> 6 <Columns> 7 <asp:TemplateField HeaderText="選択"> 8 <ItemStyle HorizontalAlign="Center" /> 9 <ItemTemplate> 10 <asp:Button runat="server" ID="btnDetail" Text="詳細" CssClass="" /> 11 </ItemTemplate> 12 </Columns> 13 </asp:GridView> 14 15 <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" 16 TargetControlID="btnGo" PopupControlID="pnlBk" BackgroundCssClass="modalBackground" 17 DropShadow="true" PopupDragHandleControlID="pnl" CancelControlID="btnCancel"> 18 </ajaxToolkit:ModalPopupExtender> 19 20 <asp:Button ID="btnGo" runat="server" Text="" Width="0%" Height="0%" Style="display: none" />
VB
1'ページB vb.net 2Protected Sub Grid_view_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles Grid_view.RowDataBound 3If e.Row.RowIndex >= 0 Then 4Dim btn as new button = CType(e.Row.FindControl("btnDetail"), Button) 5btn.OnClientClick = "push("+e.Row.RowIndex.toString()+")" 6end if 7End Sub
javascript
1function push(index){ 2//indexでポップアップの表示内容等変更。 3document.getElementById('btnGo').click(); 4}
何かアドバイスをください、お願いします
--追記---------------
Javascript
1var arg = new Object; 2var pair = location.search.substring(1).split('&'); 3for (var i = 0; pair[i]; i++) { 4 var kv = pair[i].split('='); 5 arg[kv[0]] = kv[1]; 6} 7var pram = Number(arg[kv[0]]); 8var target = document.getElementById('MainContent_Grid_view_btnDetail_' + pram.toString()); 9target.click();
こんな感じのjavascriptをページ遷移時に実行させたいのです。
urlにパラメーターを直接入力し、↑のスクリプトタグを書いて動かしたところ、
無効なポストバックまたはコールバック引数です。イベントの検証は、構成の <pages enableEventValidation="true"/>、またはページの <%@ Page EnableEventValidation="true" %> を使用して有効にされます。
と、出てしまい、
PageloadやPagePrerenderのイベントで、clientScriptで追加してもちゃんとした動きになってくれませんでした。
何かアドバイスのほうよろしくお願いします