[英]Open an ajax modalpopup with details from gridview cells
我有一個帶有約會信息的gridview。我要做的是在每個單元格中有一個linkbutton(將在運行時創建),並打開一個顯示約會詳細信息的模式彈出窗口。 任何幫助將不勝感激。
到目前為止,我已經知道了,但是它不會觸發鏈接按鈕
<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();
}
}
最重要的是,您需要確保在回發中重新創建動態LinkButton
控件,以便正確連接事件。 由於您在Grd_RowDataBound
處理程序中創建了LinkButtons
僅當您調用BindData()
時才調用該BindData()
,並且您不會在回發時調用它,因此您的事件將不會發生。 因此,如果您的代碼看起來像這樣:
if (!IsPostBack)
{
Grd.BindData();
}
嘗試刪除if(!IsPostBack)
檢查,並始終在Page_Load上調用BindData()。
在模式彈出窗口中,唯一的內容應該是一個空的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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.