0
我試着把一個ASP按鈕(使用提交等於false)或一個asp文本框,應該打開彈出窗口(我已經定義),但popupextender導致回發並顯示所有當前頁面內容(而不是使用我定義的頁面方法)。popupextendercontrol在asp.net 3.5導致回發
這是近5個小時的調試,打開新項目(試圖在其他項目中再現案例)等等。 在此先感謝...
這是頁面的主體處理用戶控制:
<body>
<form id="form1" runat="server">
<div>
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></ajaxToolkit:ToolkitScriptManager>
<ucpop:popup ID="gv" runat="server" />
</div>
</form>
這是用戶控件:
<asp:UpdatePanel runat="server" ID="upExample">
<ContentTemplate>
<asp:GridView runat="server" ID="gvCars"
OnDataBinding="gvCars_DataBinding"
OnRowCommand="gvCars_RowCommand"
>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton runat="server" ID="ibPopup" ImageUrl="~/Resources/Perspective-Button-Go-icon.png" Width="20px" Height="20px" />
<ajaxToolkit:PopupControlExtender ID="pce" runat="server" TargetControlID="ibPopup" DynamicControlID="pToUpdate"
PopupControlID="pToExtend" DynamicContextKey='<%#Eval("id") %>' DynamicServiceMethod="GetDynamicContent">
</ajaxToolkit:PopupControlExtender>
<asp:Panel runat="server" ID="pToExtend" BackColor="Red" style="display:none">Hello
<asp:Panel runat="server" ID="pToUpdate">
</asp:Panel>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label runat="server" ID="lidPopup" Text='<%=Eval("id") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label runat="server" ID="lNamePopup" Text='<%=Eval("Name") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton CommandName="p" runat="server" ID="ibNotPopUp" ImageUrl="~/Resources/Perspective-Button-Go-icon.png" Width="20px" Height="20px" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
這是網頁代碼隱藏:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static string GetDynamicContent(string contextKey)
{
StringBuilder sTemp = new StringBuilder();
sTemp.Append(string.Format("<div>Cool! I'm {0}</div>", contextKey));
return sTemp.ToString();
}
}
這是用戶控件的代碼隱藏:
public partial class GridViewWithPopUpControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
gvCars.DataBind();
}
}
protected void gvCars_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
string t = e.CommandName;
}
}
protected void gvCars_DataBinding(object sender, EventArgs e)
{
GridView gv = (GridView)sender;
gv.DataSource = CarList.CarCollection;
}
}
這是非常標準的代碼...但無法按預期工作。我想升級ajaxtoolkit,但網站系統中的其他功能可能會被破壞,所以我必須考慮一下。 再次感謝。
你能發表你有問題的代碼嗎? – 2011-12-21 10:23:29
您是否使用了** UpdatePanel **來保存要放入您的** PopUp ** – 2011-12-21 10:40:15
的控件我曾嘗試將UpdatePanel放入ItemTemplate中,我需要顯示彈出窗口,並且發生相同的問題。 ..當我調試它時,回發完成(它進入Page_Load),它不會觸發靜態Web方法...我想將Web方法放在另一個(空)頁面中,但它並沒有無論如何也無濟於事。相反,它會呈現彈出控件內的所有頁面(使內容可見兩次)。 – lionheart 2011-12-21 10:48:48