2017-06-20 30 views
0

私はTemplateDataFieldを持っています。DropDownListコントロール内にWebDataGridが含まれています。行の このDropDownListのバインドはWebDataGridを、すべてのポストバックグリッドのイベントを初期化し、再び、すべてが正常に動作するまで、ビューステートに保存されているが、データベースから取得し、チェックボックスの変更イベントデータ上の一点とグリッドをバインドされたDataTableを使用してバインドします。しかし、DropDownListで見つからないアイテムよりボタンをクリックすると(グリッドからすべてのデータを取得してデータベースに保存するボタンを保存する)、その問題は何ですか?Infragistics WebDataGrid DropDownListはポストバックで状態を失います

すべてのコントロールは[更新]パネルにあります。

+0

をどのように誰もがあなたが手元に情報を与えることができますか? **編集** あなたの質問をクリックして、有効** [、最小限の完全かつ検証可能な例]を持っていることを確認してください(https://stackoverflow.com/help/mcve)**、 他に、誰もできなくなりますあなたを助けることができる。 – iamdanchiv

答えて

0

は、私は2つの提案、代わりにRowInitializeサーバイベントのItemTemplateに作成上のリストをバインドを持っている、とあなたが動的にテンプレートを作成する場合にも、Page_Initを使用しています。

コードスニペット:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Init(object sender, EventArgs e) 
    { 
     TemplateDataField FreightField = new TemplateDataField(); 
     FreightField.ItemTemplate = new CustomTemplate(); 
     FreightField.VisibleIndex = 2; 
     FreightField.Key = "Freight"; 

     TemplateDataField ShippedDateField = new TemplateDataField(); 
     ShippedDateField.ItemTemplate = new CustomTemplate2(); 
     ShippedDateField.VisibleIndex = 3; 
     ShippedDateField.Key = "ShippedDate"; 

     if (this.WebDataGrid1.Columns.FromKey("Freight") != null) 
     { 
      ((TemplateDataField)this.WebDataGrid1.Columns["Freight"]).ItemTemplate = new CustomTemplate(); 
      ((TemplateDataField)this.WebDataGrid1.Columns["ShippedDate"]).ItemTemplate = new CustomTemplate2(); 

     } 
     else 
     { 
      this.WebDataGrid1.Columns.Add(FreightField); 
      this.WebDataGrid1.Columns.Add(ShippedDateField); 
     } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

public class CustomTemplate : ITemplate 
{ 
    public void InstantiateIn(Control container) 
    { 
     WebDropDown wdd = new WebDropDown(); 
     wdd.ID = "WebDropDown1"; 
     wdd.Width = Unit.Pixel(200); 
     wdd.Items.Add(new DropDownItem("1", "1")); 
     wdd.Items.Add(new DropDownItem("2", "2")); 
     wdd.Items.Add(new DropDownItem("3", "3")); 

     wdd.ClientEvents.SelectionChanged = "ctl00_WebDropDown1_SelectionChanged"; 

     container.Controls.Add(wdd); 
    } 

    protected void btn_Click(object sender, EventArgs e) 
    { 
     var temp = 0; 
    } 
} 

public class CustomTemplate2 : ITemplate 
{ 
    public void InstantiateIn(Control container) 
    { 
     WebDropDown wdd = new WebDropDown(); 
     wdd.ID = "WebDropDown2"; 
     wdd.Width = Unit.Pixel(200); 
     wdd.Items.Add(new DropDownItem("4", "4")); 
     wdd.Items.Add(new DropDownItem("5", "5")); 
     wdd.Items.Add(new DropDownItem("6", "6")); 


     container.Controls.Add(wdd); 
    } 
} 
関連する問題