popupextendercontrol导致asp.net 3.5中的回发

时间:2011-12-21 10:20:11

标签: asp.net ajaxcontroltoolkit asp.net-3.5

我已经尝试过使用asp按钮(使用提交等于false)或者应该打开弹出窗口(我已经定义)的asp文本框,但popupextender会导致回发并显示所有当前页面内容(而不是接收我定义的页面方法)。

这是近5个小时的调试,打开新项目(试图在其他项目中重现案例)等等。 提前谢谢......

这是处理用户控件的页面主体:

  <body>
    <form id="form1" runat="server">
   <div>
        <ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></ajaxToolkit:ToolkitScriptManager>    
       <ucpop:popup ID="gv" runat="server" />
      </div>
   </form>

这是usercontrol:

    <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>

这是Page webbehind:

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();
    }
}          

这是UserControl代码隐藏:

         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,但网站系统中的其他功能可能会被破坏,所以我不得不考虑一下。 再次感谢。

1 个答案:

答案 0 :(得分:0)

据说,Page方法不在页面中,而是在用户控件中。 我没有写用户控件和页面,我只是需要添加功能并发现问题 - 并修复它...