gpt4 book ai didi

asp.net - 从代码隐藏更改 GridView 列属性

转载 作者:行者123 更新时间:2023-12-02 12:09:19 28 4
gpt4 key购买 nike

我正在使用如下方法创建 GridView:

GridView gridView = new GridView();
gridView.DataSource = reportData.Tables[0];
gridView.DataBind();

我稍后将其导出到 Excel,效果非常好。这些列是根据我的源数据自动生成的。我想更改某些列的 DataFormatString 属性,但是在数据绑定(bind)之后和导出到 Excel 之前。我似乎找不到要更改的正确属性。有人能指出我正确的方向吗?

最佳答案

根据AutoGenerateColumns documentation:

This option provides a convenient way to display every field in the data source; however, you have limited control of how an automatically generated column field is displayed or behaves.

Note: Automatically generated bound column fields are not added to the Columns collection.

我厌倦了寻找这些 AutoGeneratedField ,但没有运气。
我可以想到实现这一目标的几种选择(从最坏到最好):

  1. 向网格添加一个事件(例如 RowDataBound ),这将使您可以访问行的单元格,但不太方便。
  2. 不要使用 AutoGeneratedField 手动创建这些列,如下所示:

    BoundField dateField = new BoundField();
    dateField.HeaderText = "Date";
    dateField.DataField = "date";
    dateField.DataFormatString = "{0:MMMM, yyyy}";
    gridView.Columns.Add(dateField);

    此选项使您可以控制标题。

  3. 添加另一个层以进行数据格式化和呈现。这可能是最好的选择。另外,这样您就不必使用 DataTables,GridView 可以绑定(bind)到具有公共(public)属性的任何对象集合(例如,绑定(bind)到 List<Employee) ),并且 AutoGeneratedField 将它们转换为列。
    我认为这是最好的选择。假设您可以访问自动列,然后呢?您必须根据列的名称或索引来搜索列,这看起来非常困惑,并且增加了耦合性。

最后一点,您应该考虑使用 API 创建 Excel 文件。这并不容易,但 HTML XLS 文件与 Excel 2007 的兼容性较差 - 它会显示一条警告消息,指出文件的格式与扩展名不兼容,更糟糕的是,如果打开并保存文件,文件就会停止(尽管可以是 Save As) ),使您的文件不太用户友好。

关于asp.net - 从代码隐藏更改 GridView 列属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1140245/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com