asp.net - 在回发中重新创建控件后,在命令事件中获取 commandeventargs 时出现问题

标签 asp.net viewstate

我在使用下面的代码第二次单击后获取命令事件参数时遇到问题。

所以 - 当我处理按钮点击并生成一个新按钮来替换原来的按钮时,我会在下一次按钮点击时丢失 View 状态。

关于我需要做什么才能让它发挥作用有什么建议吗?我不能显着改变结构,因为我必须在命令处理程序中生成数量可变的完全不相关的按钮。

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            LinkButton btn = new LinkButton();
            btn.ID = "btn1";
            this.Panel1.Controls.Add(btn);
            btn.Command += new CommandEventHandler(myLinkButton_Command);          
        }
        else
        {
            LinkButton btn = new LinkButton();
            btn.ID = "btn1";
            this.Panel1.Controls.Add(btn);
            btn.Text = "My Button 1";
            btn.CommandArgument = "1";
            btn.Command += new CommandEventHandler(myLinkButton_Command);
        }
    }

    void myLinkButton_Command(object sender, CommandEventArgs e)
    {
        int newArg = Convert.ToInt32(e.CommandArgument) + 1;// empty string on second mouse click
        this.Panel1.Controls.Clear();
        LinkButton myLinkButton = new LinkButton();          
        myLinkButton.ID = "btn1";
        this.Panel1.Controls.Add(myLinkButton);
        myLinkButton.Text = "My Button " + newArg.ToString();
        myLinkButton.CommandArgument = newArg.ToString();
    }
}

最佳答案

发生这种情况是因为您的面板中有文字控件。当您第一次添加按钮时,它(按钮)是第二个控件。当您稍后清除面板的控件集合时,它成为第一个控件,并且为第一个控件保存 View 状态,在随后的回发中成为文字。

简单转换

<asp:Panel ID="Panel1" runat="server">
</asp:Panel>

<asp:Panel ID="Panel1" runat="server" />

它会起作用。

关于asp.net - 在回发中重新创建控件后,在命令事件中获取 commandeventargs 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/722291/

相关文章:

asp.net - 是否可以在 ASP.NET 中解码 EventValidation 和 ViewState?

jquery - 迭代asp.net复选框,如果选中任何一个,则取消选中ID为="All"的复选框

javascript - 带有 angular-cli 的 ASP.NET WebApi

asp.net - 正则表达式允许文本、一些特殊字符并保持低于指定的长度

asp.net - 服务器端 View 状态可以解决 ASP.NET 的最大问题之一吗?

asp.net - 无法加载 View 状态 - ASP.NET 中的动态控件

ASP.NET MVC 通过 ActionLink 传递模型

javascript - HTML 中的弹出消息框(如 gmail 或 okcupid)?

jquery - 如何在没有帖子的情况下在 ASP.Net MVC 3 中保留值?

c# - 如何在 session 中保存 SQL 查询以备后用