【问题标题】:Column in DataView not rendering when databound to DataGrid (or RadGrid)数据绑定到 DataGrid(或 RadGrid)时,DataView 中的列不呈现
【发布时间】:2011-04-09 01:16:12
【问题描述】:

使用 ASP.NET Web 窗体。

我正在将一个 DataView 数据绑定到一个 AutoGenerateColumns 设置为 true 的 DataGrid。

DataView 的最后一列未呈现。

使用调试器我可以看到该列肯定存在于数据网格的数据源中。 该列是十进制类型,并且该列中的某些行中包含数据。 该列有一个列名。

其他列渲染正常。

发生了什么事?

更多信息

有趣的是,我可以将 AutoGenerateColumns 设置为 false,然后手动添加列:

datagrid.Columns.Clear();
foreach(DataColumn column in dataView.Table.Columns)
{
    datagrid.Columns.Add(new BoundColumn { 
        HeaderText = column.ColumnName });
}
datagrid.DataSource = dataView;

这很好用。为什么 .NET 不能用 AutoGenerateColumns 做到这一点?

【问题讨论】:

    标签: asp.net datagrid webforms


    【解决方案1】:

    我使用网格视图做类似的事情。你在设置你的数据字段吗?看起来不像。

    for (int i = 0; i < QueryObject.QuerySelectFields.Count; i++)
    {
        BoundField c = new BoundField();
    
        if (QueryObject.QuerySelectFields[i].DescriptionColumnName != null)
            c.DataField = QueryObject.QuerySelectFields[i].DescriptionColumnName;
        else
            c.DataField = QueryObject.QuerySelectFields[i].ColumnName;
    
        c.HeaderText = QueryObject.QuerySelectFields[i].Description;
        c.ItemStyle.Wrap = false;
        c.SortExpression = c.DataField;
    
        gvResults.Columns.Add(c);
    }
    

    【讨论】:

    • 当我手动添加列时,即使我没有在 BoundColumn 上设置数据字段,它也可以工作。问题在于自动生成。
    猜你喜欢
    • 2016-02-24
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2014-12-27
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多