【问题标题】:User Controls in Repeater中继器中的用户控件
【发布时间】:2009-02-22 15:24:55
【问题描述】:

我有一个提供投票按钮的用户控件(对于 SO 类型的投票模型) - 它包含一个私有 int 成员,该成员保留记录的 id。在转发器之外,它运行得很好 - 回发工作,并且正确的 id 保留在用户控件中。

在转发器内部,itemdatabound 事件处理程序将正确的 ID 与用户控件相关联,并且它可以正常工作 - 显示来自数据库的正确投票计数。但是,当按下其中一个投票按钮时,它会向用户控件发出回发,并且该控件已丢失其私有 int 成员的内容,因此它不再起作用。

我已经尝试过在回发时重新绑定用户控件,并且只在初始加载时绑定它——问题都是一样的。

如何让用户控件在回发中保留该 int 的值?

【问题讨论】:

    标签: c# asp.net user-controls postback repeater


    【解决方案1】:

    您是否尝试将值放入视图状态?

    public string Id{
        get
        {
            return this.ViewState["Value"] == null ?
                0 :
                (int)this.ViewState["Value"];
        }
        set { this.ViewState["Value"] = value; }
    }
    

    【讨论】:

    • 是的,我认为您已经正确地确定了原因和解决方案。
    • 谢谢!那成功了。关于为什么我需要为转发器中的控件执行此操作,但相同的控件在其外部正常工作的任何见解?
    • 控件中的私有成员变量不会序列化为视图状态的一部分,因此不会在回发时恢复。如果您想在视图状态中保留私有变量,上述解决方案是正确的。另一种选择是使用隐藏的文本框,然后它会自动恢复。
    • hm 没有办法绑定用户控件 - 我现在正在寻找它,我确信我上次使用它时使用了任何 webmagic。 OnItemDataBind 不知何故。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 2019-01-04
    • 1970-01-01
    相关资源
    最近更新 更多