FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

搜索
查看: 12930|回复: 10
打印 上一主题 下一主题

Grid能够动态创建编辑列RenderField吗?

[复制链接]
跳转到指定楼层
楼主
发表于 2014-8-8 12:00:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Grid能够动态创建编辑列RenderField吗?需要里面有可以编辑数据的。
比如
   <f:RenderField Width="140px" DataField="ItemCode" ColumnID="ItemCode" FieldType="String" HeaderText="代码" TextAlign="Center" SortField="ItemCode">
                <Editor>
                    <f:TextBox ID="tbx_ItemCode" Required="true" Enabled="false" CssStyle="Color:red"  AutoPostBack="true" runat="server"></f:TextBox>
                </Editor>
            </f:RenderField>


这个应该如何创建呢,主要是里面的TextBOX
沙发
发表于 2014-8-17 21:49:55 | 只看该作者
同问  搞了一会没有搞出来
板凳
 楼主| 发表于 2014-8-20 23:14:59 | 只看该作者
老大,能给个例子吗?
地板
发表于 2014-8-22 15:13:22 | 只看该作者
可以的。这是我的实现代码的简化版。
  1.    // 注意:动态创建的代码需要放置于Page_Init(不是Page_Load),这样每次构造页面时都会执行
  2. //一定要在Page_Init中动态创建,在Page_Load虽然可以动态创建,但是后面会得不到数据
  3.         protected void Page_Init(object sender, EventArgs e)
  4.         {
  5.             InitGrid();
  6.         }        

  7.        private void InitGrid()
  8.         {
  9.             InitGridColumn();
  10.         }

  11.         private void InitGridColumn()
  12.         {
  13.             FineUI.RenderField rf = null;   
  14.             DataTable dt= FetchDataTable();
  15.             FineUI.NumberBox numberBox = null;
  16.             String emptyText = "数量";
  17.             String dataField = "";      
  18.             foreach (DataRow row in dt.Rows)
  19.             {
  20.                 rf = new FineUI.RenderField();
  21.                 dataField = row["DATA_FIELD"].ToString();
  22.                 rf.ID = dataField;
  23.                 rf.ColumnID = dataField;
  24.                 rf.HeaderText = row["HEADER_TEXT"]ToString();
  25.                 rf.DataField = dataField;
  26.                  
  27.                  //添加编辑控件的部分。NumberBox可以依实际需要更换,比如换在TextBox
  28.                     numberBox = new NumberBox();
  29.                     numberBox.ID = "numberBox_" + dataField;
  30.                     numberBox.EmptyText = emptyText;
  31.                     numberBox.NoDecimal = true;
  32.                     rf.Editor.Add(numberBox);  
  33.                
  34.                
  35.                 rf.TextAlign = FineUI.TextAlign.Center;
  36.                 Grid1.Columns.Add(rf);
  37.             }
  38.         }

  39.       //使用DataTable模拟需要动态生成列的标题和绑定字段
  40.        private DataTable FetchDataTable()
  41.         {
  42.             DataTable dt = new DataTable();
  43.             dt.Columns.Add("HEADER_TEXT");
  44.             dt.Columns.Add("DATA_FIELD");

  45.             for (int i = 0; i < 10; i++)
  46.             {
  47.                 DataRow row = dt.NewRow();
  48.                 row["EADER_TEXT"] = String.Format("H_{0}", i + 1);
  49.                 row["DATA_FIELD"] = String.Format("D_{0}", i + 1);
  50.             }

  51.             return dt;
  52.         }
复制代码
5#
 楼主| 发表于 2014-8-22 15:35:10 | 只看该作者
厉害,马上试试
6#
 楼主| 发表于 2014-8-22 16:46:14 | 只看该作者
可以,不过有个问题,就是 点击下 编辑框,系统就视为编辑了。出现红色符号,其实没有编辑
7#
发表于 2014-8-22 17:59:45 | 只看该作者
舞柯庶 发表于 2014-8-22 16:46
可以,不过有个问题,就是 点击下 编辑框,系统就视为编辑了。出现红色符号,其实没有编辑 ...

这是numberBox控件本身的特性。这个不论是不是动态创建都会有这样的情况。
换用FineUI.TextBox就不会有这样的问题。
9#
 楼主| 发表于 2014-8-22 18:31:35 | 只看该作者
把类型 改为 FieldType="String" 就可以了
10#
 楼主| 发表于 2014-8-23 09:48:13 | 只看该作者
下拉框 转化函数 如何处理呢?
function renderGender();这个需要在后台添加,如何添加呢?如果能传递个控件名称,页面放一个函数就行了!不清楚如何处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-22 15:56 , Processed in 0.047197 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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