操纵自动生成的列
本文关键字:自动生成 操纵 | 更新日期: 2023-09-27 17:49:15
我有一个gridview,并将其绑定到一个未知列的数据源。
当我简单地将它绑定到一个数据网格时,所有的工作都找到了,所有的都被绑定了。
但是我找不到根据列的值来处理列的方法。
我发现我可以这样做:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
DateTime x;
var res =DateTime.TryParse(e.Row.Cells[i].Text,out x);
if (res)
{
TextBox text = new TextBox();
text.Text = e.Row.Cells[i].Text;
e.Row.Cells[i].Controls.Clear();
e.Row.Cells[i].Controls.Add(text);
}
}
}
但是那非常丑陋
是否有任何方法我可以创建一个日期时间到文本框转换器,并告诉我的数据网格使用它进行数据绑定?
我要把控件从文本框改为日期选择器,这只是测试模式。
在非常非常基本的数据绑定场景之外,您将发现您需要关闭AutoGenerateColumns
,为许多(或大多数)列设置TemplateField
元素,并使用RowDataBound
事件。
很抱歉你觉得这个模式很难看,但是auto-generate只会做这个,不会做更多;当网格处理创建列和连接值时,您无法控制这些值。