【问题标题】:View State for Custom DropDownList control自定义 DropDownList 控件的视图状态
【发布时间】:2011-10-17 14:32:00
【问题描述】:

我在维护自定义 DropDownList 控件上的选定值时遇到问题。我想如果在基本控件上启用了 viewstate 属性,一切都会设置好,我发现情况并非如此。我想我的另一个问题是也许我应该只使用 Request 对象来获取/设置值?我的控制如下。

[DefaultProperty("Text")]
[ToolboxData("<{0}:TicketStatusDropdownControl runat=server></{0}:TicketStatusDropdownControl>")]
public class TicketStatusDropdownControl : DropDownList
{

    private string _defaultValue = string.Empty;
    private string _selectedItem = string.Empty;
    private string _selectedValue = string.Empty;

    protected override void Render(HtmlTextWriter writer)
    {
        if (_defaultValue != string.Empty)
        {
            this.Items.Add(new ListItem(_defaultValue));
        }

        foreach (string item in TicketWorkflowStates.getWorkflowStates())
        {
            this.Items.Add(new ListItem(item));
        }

        base.Render(writer);
    }



}

【问题讨论】:

    标签: asp.net controls drop-down-menu viewstate


    【解决方案1】:

    尝试覆盖 LoadViewState() 和 SaveViewState() 方法 - 在那里设置和检索 ViewState 值?

    【讨论】:

    • 对视图状态和创建自定义控件相当陌生,到目前为止我想出的是。 protected override void LoadViewState(object savedState) { if (savedState != null) { object selectValue = (object)savedState; base.LoadViewState(savedState); } } 保护覆盖对象 SaveViewState() { object selectValue = new object(); selectValue = base.SelectedValue;返回选择值; }
    • 甚至不需要它,我能够使用控件提供的 ControlState。我在 Render Method 中添加列表项而不是 OnPreRender,这显然会杀死 Control/ViewState该数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多