【问题标题】:Dynamic Text Box Add on button click and data session in asp.net在 asp.net 中添加按钮单击和数据会话的动态文本框
【发布时间】:2018-02-16 04:30:31
【问题描述】:

问题更新

我正在使用这段代码在按钮单击时添加多个标签。 但是每次它给计数值 0 并且执行后只有相同的标签。

 int count = (int)ViewState["count"];
        for (int i = 0; i <= count; i++)
        {
            TextBox txtnew = new TextBox();
            txtnew.ID = "label_" + (i + 1);
            txtnew.Text = "label_" + (i + 1);
            ViewState["count"] = i;
            pnlControl.Controls.Add(txtnew);
        }
 ViewState["count"] = count + 1;

我现在想要的是如何以更方便的方式保持每个控件的数据绑定到它。

【问题讨论】:

    标签: c# dynamic textbox viewstate


    【解决方案1】:

    每个 PostBack 都会丢失动态控件,因此您需要在某个地方跟踪创建的控件,并在重新加载页面时重新创建它们。

    在这里查看我的答案:How to dynamically create ASP.net controls within dynamically created ASP.net controls

    它是关于按钮的,但基本原理是相同的。只需将 Button 替换为 Label 即可。

    【讨论】:

    • 没有区别。
    • 它成功了,但我失去了以前的控制权。
    • 那么您可能没有将那个存储在会话/视图状态中。
    • 是的,谢谢我的答案。感谢您的帮助,请投票。
    【解决方案2】:

    这是因为它是一个 Web 应用程序,因此不会保留会话,因为 Web 应用程序本质上是无状态的。因此,每个回帖都会得到一个新的页面实例,其中int count0。解决方案:使用Session 存储数据以供将来重复使用

    int count = pnlControl.Controls.OfType<Label>().ToList().Count;
    Session["count"] = count;
    

    在回发请求中取回它

    if(Session["count"] != null)
      count = (int)Session["count"];
    

    【讨论】:

    • 好吧,让我试试这个。请投票以获得更好的回应。
    • 是的@rahul 确实做到了,但也替换了之前的标签。
    • 感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2013-07-09
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多