FineUI 官方论坛
标题:
Grid能够动态创建编辑列RenderField吗?
[打印本页]
作者:
舞柯庶
时间:
2014-8-8 12:00
标题:
Grid能够动态创建编辑列RenderField吗?
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
作者:
Bingo
时间:
2014-8-17 21:49
同问 搞了一会没有搞出来
作者:
舞柯庶
时间:
2014-8-20 23:14
老大,能给个例子吗?
作者:
xxdddail
时间:
2014-8-22 15:13
可以的。这是我的实现代码的简化版。
// 注意:动态创建的代码需要放置于Page_Init(不是Page_Load),这样每次构造页面时都会执行
//一定要在Page_Init中动态创建,在Page_Load虽然可以动态创建,但是后面会得不到数据
protected void Page_Init(object sender, EventArgs e)
{
InitGrid();
}
private void InitGrid()
{
InitGridColumn();
}
private void InitGridColumn()
{
FineUI.RenderField rf = null;
DataTable dt= FetchDataTable();
FineUI.NumberBox numberBox = null;
String emptyText = "数量";
String dataField = "";
foreach (DataRow row in dt.Rows)
{
rf = new FineUI.RenderField();
dataField = row["DATA_FIELD"].ToString();
rf.ID = dataField;
rf.ColumnID = dataField;
rf.HeaderText = row["HEADER_TEXT"]ToString();
rf.DataField = dataField;
//添加编辑控件的部分。NumberBox可以依实际需要更换,比如换在TextBox
numberBox = new NumberBox();
numberBox.ID = "numberBox_" + dataField;
numberBox.EmptyText = emptyText;
numberBox.NoDecimal = true;
rf.Editor.Add(numberBox);
rf.TextAlign = FineUI.TextAlign.Center;
Grid1.Columns.Add(rf);
}
}
//使用DataTable模拟需要动态生成列的标题和绑定字段
private DataTable FetchDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("HEADER_TEXT");
dt.Columns.Add("DATA_FIELD");
for (int i = 0; i < 10; i++)
{
DataRow row = dt.NewRow();
row["EADER_TEXT"] = String.Format("H_{0}", i + 1);
row["DATA_FIELD"] = String.Format("D_{0}", i + 1);
}
return dt;
}
复制代码
作者:
舞柯庶
时间:
2014-8-22 15:35
厉害,马上试试
作者:
舞柯庶
时间:
2014-8-22 16:46
可以,不过有个问题,就是 点击下 编辑框,系统就视为编辑了。出现红色符号,其实没有编辑
作者:
xxdddail
时间:
2014-8-22 17:59
舞柯庶 发表于 2014-8-22 16:46
可以,不过有个问题,就是 点击下 编辑框,系统就视为编辑了。出现红色符号,其实没有编辑 ...
这是numberBox控件本身的特性。这个不论是不是动态创建都会有这样的情况。
换用FineUI.TextBox就不会有这样的问题。
作者:
舞柯庶
时间:
2014-8-22 18:25
似的!!!!!
作者:
舞柯庶
时间:
2014-8-22 18:31
把类型 改为 FieldType="String" 就可以了
作者:
舞柯庶
时间:
2014-8-23 09:48
下拉框 转化函数 如何处理呢?
function renderGender();这个需要在后台添加,如何添加呢?如果能传递个控件名称,页面放一个函数就行了!不清楚如何处理
作者:
舞柯庶
时间:
2014-8-23 10:48
下拉框函数 做了个转化,方法比较拙,
<Columns>
<f:RowNumberField Width="30" TextAlign="Center" ColumnID="RowNum" ID="RowNum" EnablePagingNumber="true" ></f:RowNumberField>
</Columns>
在生成下拉框时,增加以下语句;其中xDDL_ColRec=列号,ddl_"+xDataField=控件ID
Response.Write("<script type='text/javascript'>function renderGender(value, metadata, record, rowIndex, colIndex) {return F('" + RowNum.ClientID.Replace("RowNum", "ctl"+xDDL_ColRec+"_ddl_"+xDataField)+"').f_getTextByValue(value);}</script>");
欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/)
Powered by Discuz! X3.4