1

いくつかの列とビューの詳細リンクボタンがあるグリッドビューがありますいくつかの詳細を含む別のグリッドビューを含むポップアップウィンドウを開きたいですこれを行うには、ビューの詳細リンクボタンからコマンド引数としてストア番号を渡しますが、問題がありますポップアップは開いていますが、サーバー側のイベントLinkViewDetail_Commandが呼び出されていないため、gridviewには何も表示されません。このコードの変更またはこれを行う別の方法を提案してください。

<asp:TemplateField HeaderText="View Detail" >
            <ItemTemplate>
             <asp:LinkButton ID="LinkButtonViewDetail" Text="View" runat="server"  CommandArgument='<%#Eval("StoreNumber").ToString()%>' OnCommand="LinkViewDetail_Command"/>
             <ajax:ModalPopupExtender runat ="server" ID="ModalPopupWarning" 
            TargetControlID="LinkButtonViewDetail"
            PopupControlID="PanelPopUp"  
            CancelControlID="ButtonCancel"
                            ></ajax:ModalPopupExtender>
            </ItemTemplate>
          </asp:TemplateField>



 Public Sub LinkViewDetail_Command(ByVal sender As Object, ByVal e As CommandEventArgs)
    Try

        GridViewViewNewStoreTransitionStore.DataSource = m_DataAccess.GetFinalStoreCloseAcquisition(CInt(e.CommandArgument))
        GridViewViewNewStoreTransitionStore.DataBind()

    Catch ex As Exception
        Common.WriteLog(ex)
        Response.Redirect("..\Errors.aspx", False)
    End Try
End Sub
4

1 に答える 1

1

ModalPopupExtenderをグリッドビューの外に置き、次のように初期化します

 <ajax:ModalPopupExtender runat ="server" ID="ModalPopupWarning" 
        TargetControlID="PanelPopUp" <!--dont use the LinkButtonViewDetail as a TargetControlID use the    id of any other control -->
        BehaviorID="PanelPopUpBI" 
        PopupControlID="PanelPopUp"  
        CancelControlID="ButtonCancel">
 </ajax:ModalPopupExtender>

次に、グリッドビューからOnRowCreatedイベントを使用して、詳細ビューリンクを非同期トリガーとして登録します

protected void OnRowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
       foreach (Control cells in e.Row.Controls)
       {
         foreach (Control link in cells.Controls)
         {
            if (link.GetType() == typeof(LinkButton))
            {
               // here i suppose that you have a master page
               (this.Master.FindControl("ToolkitScriptManager") as ScriptManager).RegisterAsyncPostBackControl(link);
            }
          }
       }
    }

}

aspxファイルで、このスクリプトを使用して、ajaxリクエストが終了したときにポップアップを表示します

 <script type="text/javascript">
  function pageLoad() { 
   Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);

        function endRequestHandler() {
            $find('PanelPopUpBI').show();
        }
    }
</script>
于 2012-05-25T11:26:50.593 に答える