2011-08-01 4 views
0

カスタムDropDownListコントロールで選択した値を維持する際に問題が発生しました。私はviewstateプロパティがベースコントロールで有効になっていれば、すべてがすべて設定され、私はそれが当てはまらないことがわかった。私は別の質問が私は多分私は値を取得/設定するために要求オブジェクトを使用している必要がありますと思う?私のコントロールは次の通りです。カスタムDropDownListコントロールのビューステート

[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); 
    } 



} 

答えて

0

LoadViewState()メソッドとSaveViewState()メソッドをオーバーライドして、ViewState値を設定して取得しますか?

+0

かなりviewstateものに新しいとカスタムコントロールを作成する、これまで私が思い付いたものです。保護されたオーバーライドvoid LoadViewState(オブジェクトsavedState) { if(savedState!= null) { オブジェクトselectValue =(オブジェクト)savedState; base.LoadViewState(savedState); }} 保護オーバーライドオブジェクトSaveViewState(){ オブジェクトselectValue =新しいオブジェクト(); selectValue = base.SelectedValue; return selectValue; } –

+1

コントロールが提供するControlStateを使用することができませんでした。私は、そのデータのControl/ViewStateを明らかに殺すOnPreRenderではなく、Renderメソッドでリストアイテムを追加していました。 –

+0

今は動作していますか? – IrishChieftain

関連する問題