FineUI 官方论坛

标题: Grid动态创建的模板列如何动态更新数据 [打印本页]

作者: xxdddail    时间: 2014-7-2 17:22
标题: Grid动态创建的模板列如何动态更新数据
有如下的Grid.
  1. <f:Grid runat="server" ID="GridDemo" AllowCellEditing="true" ClicksToEdit="1">
  2.             <Columns>
  3.                 <f:TemplateField Width="200" HeaderText="数据">
  4.                     <ItemTemplate>
  5.                         <asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("Data") %>'></asp:TextBox>
  6.                     </ItemTemplate>
  7.                 </f:TemplateField>               
  8.             </Columns>
  9.         </f:Grid>
复制代码

如果需要修改模板列中TextBox1的数据,可以在后台修改,然后更新,即
  1.   GridRow gridRow = GridDemo.Rows[0];
  2.             System.Web.UI.WebControls.TextBox textBox = gridRow.FindControl(TextBox1.ID) as System.Web.UI.WebControls.TextBox;
  3.             textBox.Text = Guid.NewGuid().ToString();
复制代码
但是动态生成的模板列,如果也要采用类似的方式来修改数据的话,要如何处理?
(通过修改数据源后重新绑定的方式虽说可以,但需要重新刷新页面来达成。所以想知道有没有类似GridDemo.UpdateTemplateFields()的方式
动态模板列的生成如下
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (!IsPostBack)
  4.             {
  5.                 FineUI.TemplateField tf = new FineUI.TemplateField();
  6.                 tf.Width = Unit.Pixel(200);
  7.                 tf.ID = "tfDemo";
  8.                 tf.HeaderText = "模板列";
  9.                 tf.ItemTemplate = new GenderTemplate();
  10.                 GridDemo.Columns.Add(tf);
  11.             }
  12.         }
复制代码
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Web;
  6. using System.Web.UI;

  7. namespace FineUITest
  8. {
  9.     public class GenderTemplate : ITemplate
  10.     {      

  11.         public void InstantiateIn(System.Web.UI.Control container)
  12.         {
  13.             System.Web.UI.WebControls.Label lbl = new System.Web.UI.WebControls.Label();         
  14.             lbl.DataBinding += new EventHandler(labGender_DataBinding);
  15.             container.Controls.Add(lbl);
  16.         }

  17.         private void labGender_DataBinding(object sender, EventArgs e)
  18.         {
  19.             System.Web.UI.WebControls.Label lbl = (System.Web.UI.WebControls.Label)sender;

  20.             IDataItemContainer dataItemContainer = (IDataItemContainer)lbl.NamingContainer;

  21.             String gender = ((DataRowView)dataItemContainer.DataItem)["Data"].ToString();

  22.             lbl.Text =gender;
  23.         }
  24.     }
  25. }
复制代码









欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4