2

予定情報を含むグリッドビューがあります。各セルにリンクボタン(実行時に作成されます)を配置し、予定の詳細を示すモーダルポップアップを開きます。どんな助けでも大歓迎です。

これまでのところ、リンクボタンは起動しません

<asp:GridView ID="Grd" runat="server" AutoGenerateColumns="true" onrowdatabound="Grd_RowDataBound"></asp:GridView><asp:Button ID="btnShowPopup" style="display:none" runat="server"  />
<ajaxToolkit:ModalPopupExtender
ID="ModalPopupExtender1" runat="server" TargetControlID="btnShowPopup" PopupControlID="pnlpopup" CancelControlID="ImgCancel" ></ajaxToolkit:ModalPopupExtender>
<asp:Panel ID="pnlpopup" runat="server" Width="400px" ><!--Show Details--!>
 <asp:ImageButton ID="imgCancel"  AlternateText="cancel"  Height="25" Width="25" runat="server" ImageAlign="Right" />
</asp:Panel>

コードビハインド

protected void Grd_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //Split out the visit details & format
            for (int i = 0; i <= e.Row.Cells.Count - 1; i++)
            {

                LinkButton lnk = new LinkButton();
                lnk.Text = "Details for:" + "<br />" + e.Row.Cells[i].Text; 

                lnk.CommandName = "ShowDetails";
                lnk.Command += LinkButton_Command;
                e.Row.Cells[i].Controls.Add(lnk);


            }



        }
    }
    protected void LinkButton_Command(object sender, CommandEventArgs e)
    {
        if (e.CommandName == "ShowDetails")
        {

            LinkButton btndetails = sender as LinkButton;

            GridViewRow gvrow = (GridViewRow)btndetails.NamingContainer;

            this.ModalPopupExtender1.Show();


        }
    }
4

2 に答える 2

0

LinkButton肝心なのは、イベントを適切に配線するために、ポストバックで動的コントロールが再作成されていることを確認する必要があるということです。LinkButtonsハンドラー内に作成しますGrd_RowDataBound。これは、呼び出したときにのみ呼び出されますBindData()(そして、ポストバックでは呼び出されません)。したがって、イベントはワイヤリングされません。したがって、コードが次のようになっている場合:

if (!IsPostBack)
{
     Grd.BindData();
}

チェックを外してみてくださいif(!IsPostBack)。常にPage_LoadでBindData()を呼び出してください。

于 2012-11-06T16:04:50.043 に答える
0

モーダルポップアップでは、コンテンツは空のiframeのみである必要があります。次に、次のようにjavascript関数を記述します。

function showPopup(target, link, width, height)
{
    var frame = document.getElementById('popupIframe');
    frame.src = link;
    frame.width = width;
    frame.height = height;
    var location = Sys.UI.DomElement.getLocation(target);
    var popup = $find('Popup');
    popup.set_X(location.x);
    popup.set_Y(location.y);
    popup.show();
}

次に、リンクボタンに次を追加します。

OnClientClick="showPopup(this, your_details_page_with_querystring_params, width, height)
于 2013-02-26T13:35:49.163 に答える