【问题标题】:Ajax Update Panel asp.net triggerAjax 更新面板 asp.net 触发器
【发布时间】:2013-06-07 08:37:46
【问题描述】:

我有 3 个更新面板控制 asp.net,updatePanel1updatePanel2updatePanel3。第一次加载页面时updatePanel1 将自动加载更多buttons 例如:button1。当单击updatePanel1 中的button1 时,将显示updatePanel2 中的按钮,例如:button2。点击button2会触发updatePanel3,并像gridview一样在updatePanel3中显示数据。

现在,我的问题是当单击button2 updatePanel2 中的所有按钮时丢失。你能告诉我为什么我在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>

【问题讨论】:

    标签: c# asp.net ajax


    【解决方案1】:

    这与视图状态有关。由于 updatepanel2 中的按钮是在运行时创建的,因此它们会在 page_load 事件中丢失。每次都必须重新生成。您将如何实现它取决于您如何编写代码。没有代码我不能告诉你更多。

    【讨论】:

    • 嗨@ratna,谢谢这里我已经更新了我的问题,是的,你是对的,我以编程方式使用按钮以及如何使用视图状态?
    猜你喜欢
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2015-01-28
    • 1970-01-01
    相关资源
    最近更新 更多