2017-06-20 140 views
0

我有TemplateDataField其中包含DropDownList控制在WebDataGrid。 此DropDownList在WebDataGrid的行初始化事件绑定和每个回发网格使用DataTable存储在视图状态,但复选框中的一点更改绑定再次从数据库获取事件数据并绑定网格,直到一切工作正常。但是当我点击按钮(保存从网格获取所有数据并将其保存到数据库中的按钮)比在DropDownList中找不到任何项目时,那么这是什么问题?Infragistics WebDataGrid DropDownList丢失状态在回发

所有控件都在更新面板中。

+0

如何任何人可以帮助你给手头的信息?请点击**编辑** 你的问题,并确保你有一个有效的** [最小,完整和可验证的例子](https://stackoverflow.com/help/mcve)**, 否则,没有人会能够帮助你。 – iamdanchiv

回答

0

我有两个建议,绑定ItemTemplate创建列表而不是RowInitialize服务器事件,并且如果您要动态创建模板,请使用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); 
    } 
} 
相关问题