C# 如何使用PopupControlExtender弹出ASP.NET控件而不是面板?

C# 如何使用PopupControlExtender弹出ASP.NET控件而不是面板?,c#,asp.net,web-services,ajaxcontroltoolkit,popupcontrolextender,C#,Asp.net,Web Services,Ajaxcontroltoolkit,Popupcontrolextender,PopupControlExtender可以弹出许多ASP.NET控件,但在Internet上只能找到弹出面板的示例。。。 如何弹出其他控件,如gridview e、 我将通过MachineNo从数据库中获取一个DataTable,并将DataTable设置为GridView2的数据源。然后我想弹出GridView2,当鼠标悬停在imagebutton上时显示该机器的信息。 如何编写后面的代码 我刚刚读了你的代码。而我这边,我成功地以这种方式出现 protected void gvTempl

PopupControlExtender可以弹出许多ASP.NET控件,但在Internet上只能找到弹出面板的示例。。。 如何弹出其他控件,如gridview

e、 我将通过MachineNo从数据库中获取一个DataTable,并将DataTable设置为GridView2的数据源。然后我想弹出GridView2,当鼠标悬停在imagebutton上时显示该机器的信息。 如何编写后面的代码



我刚刚读了你的代码。而我这边,我成功地以这种方式出现

protected void gvTemplates_RowCreated(object sender, GridViewRowEventArgs e)
    {
        //GridView gv1 = (GridView)sender;
        //foreach (GridViewRow item in gv1.Rows)
        //{
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                PopupControlExtender pce = e.Row.FindControl("PopupControlExtender1") as PopupControlExtender;
                string behaviorID = "pce_" + e.Row.RowIndex;
                pce.BehaviorID = behaviorID;
                Panel pnl = (Panel)e.Row.FindControl("Panel2");
                string OnMouseOverScript = string.Format("$find('{0}').showPopup();", behaviorID);
                string OnMouseOutScript = string.Format("$find('{0}').hidePopup();", behaviorID);
                pnl.Attributes.Add("onmouseover", OnMouseOverScript);
                pnl.Attributes.Add("onmouseout", OnMouseOutScript);
            }
        //}
    }

[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
    public static string GetDynamicContent(string contextKey)
    {
        StringBuilder b = new StringBuilder();
        b.Append("<table style='background-color:#f3f3f3; border: #4DB3A4 2px solid; ");
        b.Append("width:100px;height:100px; font-size:8pt; font-family:'lucida grande', tahoma, verdana, arial, sans-serif;' cellspacing='0' cellpadding='3'>");
        b.Append("<tr><td colspan='3' style='background-color:white;'>");
        b.Append(contextKey);
        b.Append("</td></tr>");
        b.Append("</table>");
        return b.ToString();
    }
protectedvoidgvTemplates\u RowCreated(对象发送方,GridViewRowEventArgs e)
{
//GridView gv1=(GridView)发送方;
//foreach(gv1.Rows中的GridViewRow项)
//{
如果(e.Row.RowType==DataControlRowType.DataRow)
{
PopupControlExtender pce=e.Row.FindControl(“PopupControlExtender 1”)作为PopupControlExtender;
string behaviorID=“pce_”+e.Row.RowIndex;
pce.BehaviorID=BehaviorID;
Panel pnl=(Panel)e.Row.FindControl(“Panel2”);
string OnMouseOverScript=string.Format(“$find('{0}')).showPopup();”,behaviorID);
string OnMouseOutScript=string.Format(“$find('{0}')).hidePopup();”,behaviorID);
添加(“onmouseover”,onmouseover脚本);
添加(“onmouseout”,OnMouseOutScript);
}
//}
}
[System.Web.Services.WebMethodAttribute(),System.Web.Script.Services.ScriptMethodAttribute()]
公共静态字符串GetDynamicContent(字符串contextKey)
{
StringBuilder b=新的StringBuilder();
b、 附加(“”);
b、 附加(“”);
b、 追加(contextKey);
b、 附加(“”);
b、 附加(“”);
返回b.ToString();
}

与面板控件相同,只需使用gridview控件id而不是面板控件id。请首先尝试,如果出现问题,请在此处询问。对于面板控件,以本文为例,他通过GetDynamicContent()为弹出窗口中的表格输出构建html字符串,我可以在哪里放置gridview.datasource和gridview.databind等方法来构建gridview?在那之后,我如何弹出它呢?不必在该方法上创建内容
GetDynamicContent()
您只需将该方法上的数据源绑定到弹出的gridview。我听从了您的建议,遇到了一个新问题:由于方法GetDynamicContent()是一个静态方法,它无法访问GridView2。因此,我无法将GridView2绑定到data.Ok。尝试在
GridView1\u RowCreated
方法中将该gidview绑定到数据源