FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 2174|回复: 0
打印 上一主题 下一主题

Grid动态创建的模板列如何动态更新数据

[复制链接]
跳转到指定楼层
楼主
发表于 2014-7-2 17:22:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有如下的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 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-26 06:26 , Processed in 0.043138 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表