2011-12-21 61 views
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,但網站系統中的其他功能可能會被破壞,所以我必須考慮一下。 再次感謝。

+0

你能發表你有問題的代碼嗎? – 2011-12-21 10:23:29

+0

您是否使用了** UpdatePanel **來保存要放入您的** PopUp ** – 2011-12-21 10:40:15

+0

的控件我曾嘗試將UpdatePanel放入ItemTemplate中,我需要顯示彈出窗口,並且發生相同的問題。 ..當我調試它時,回發完成(它進入Page_Load),它不會觸發靜態Web方法...我想將Web方法放在另一個(空)頁面中,但它並沒有無論如何也無濟於事。相反,它會呈現彈出控件內的所有頁面(使內容可見兩次)。 – lionheart 2011-12-21 10:48:48

回答

0

假設頁面方法不在頁面中,而是在用戶控件中。 我沒有寫用戶控制和頁面,我只是需要添加功能,並發現這個問題 - 並修復它...