操纵自动生成的列

本文关键字:自动生成 操纵 | 更新日期: 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只会做这个,不会做更多;当网格处理创建列和连接值时,您无法控制这些值。