繁体   English   中英

Ajax更新面板asp.net触发器

[英]Ajax Update Panel asp.net trigger

我有3个更新面板控件asp.net,其中updatePanel1updatePanel2updatePanel3 首次加载页面时, updatePanel1将自动加载更多buttons例如: button1 单击updatePanel1 button1时,将显示updatePanel2按钮ex: button2 当单击button2 ,它将触发updatePanel3并在updatePanel3显示数据,例如gridview。

现在,我的问题是,单击button2updatePanel2所有按钮都丢失了。 你能给我解决方案为什么我在updatePanel2丢失按钮吗?

UPDATE

Default.cs

  protected void Page_Load(object sender, EventArgs e) { foreach (KeyValuePair<String, String> catshow in cat) { Button x = new Button(); x.ID = catshow.Key; x.CssClass = "btnTop"; x.Text = catshow.Value; x.CommandArgument = catshow.Key; x.Command += new CommandEventHandler(buttonClick); PlaceHolder1.Controls.Add(x); } } protected void buttonClick(object sender, CommandEventArgs e) { string key = e.CommandArgument.ToString(); foreach (KeyValuePair<String, String> datshow in data[key]) { Button x = new Button(); x.ID = datshow.Key; x.CssClass = "btnBottom"; x.Text = datshow.Value; x.CommandArgument = datshow.Key; x.Command += new CommandEventHandler(buttonClickPrd); PlaceHolder2.Controls.Add(x); } } protected void buttonClickPrd(object sender, CommandEventArgs e) { string key = e.CommandArgument.ToString(); DataTable dt = new DataTable(); dt.Columns.Add("Qty", Type.GetType("System.String")); dt.Columns.Add("Unit", Type.GetType("System.String")); dt.Columns.Add("Price", Type.GetType("System.String")); dt.Columns.Add("Total", Type.GetType("System.String")); dt.Rows.Add(); dt.Rows[dt.Rows.Count - 1]["Qty"] = this.sales[key]["qty"]; dt.Rows[dt.Rows.Count - 1]["Unit"] = this.sales[key]["unit"]; dt.Rows[dt.Rows.Count - 1]["Price"] = this.sales[key]["price"]; dt.Rows[dt.Rows.Count - 1]["Total"] = this.sales[key]["total"]; GridView1.DataSource = dt; GridView1.DataBind(); } 

Default.aspx

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
             <ContentTemplate>
                 <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
            </ContentTemplate>
         </asp:UpdatePanel>
         <asp:UpdatePanel ID="UpdatePanel2" runat="server">
             <ContentTemplate>
                 <asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>
             </ContentTemplate>
         </asp:UpdatePanel>
         <asp:UpdatePanel ID="UpdatePanel3" runat="server">
             <ContentTemplate>
                 <asp:GridView ID="GridView1" runat="server"></asp:GridView>
             </ContentTemplate>
         </asp:UpdatePanel>

这与viewstate有关。 由于updatepanel2中的按钮是在运行时创建的,因此它们丢失是page_load事件。 您每次都必须重新生成。 确切的实现方式取决于您编写代码的方式。 没有代码,我无法告诉您更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM