【问题标题】:Right Justify a GridView Column Based on column.DataType基于 column.DataType 右对齐 GridView 列
【发布时间】:2016-02-01 17:20:46
【问题描述】:

我需要在后面的代码中右对齐 DataColumn 中的所有单元格。 我正在使用转发器生成大量表,因此我无法将样式硬编码到 <td> 元素或 css 文件中(据我所知)。

理想情况下,我会像这样抓住相关的列;

foreach (DataColumn column in ResultTable.Columns) {

            if (column.DataType == typeof(int))
            {
               //Set the column justification to "right"
            } }

在调用中继器之前,但是稍微用谷歌搜索让我在 if 语句中没有什么可输入的。 IE。我无法从代码后面设置样式。

我为包含整数的所有单元格使用 javascript 找到了一个解决方案,但由于它使用正则表达式来查找整数,它也不会正确证明列的标题。典型列的结果如下所示;

在这种情况下,我也需要“计数”正确对齐。

【问题讨论】:

    标签: .net c#-4.0 gridview alignment datacolumn


    【解决方案1】:

    您可以使用GridView 事件RowDataBound,该事件在每一行被数据绑定后触发。您可以使用 GridViewRow 获取行,然后使用 row.cells[index] 其中 index 是列号

    GridViewRow gvr = e.Row;
    gvr.Cells[0].HorizontalAlign = HorizontalAlign.Right;
    

    希望对你有帮助

    【讨论】:

    • 查看了这个事件,它不太适合这个问题。也许我的屏幕截图具有误导性,但我不会提前知道哪一列将包含整数。所以我需要gvr.Cells[ColumnThatContainsIntegerValues].HorizontalAlign - HorizontalAlign.Right; 之类的东西但是,我无法在该事件中获取此信息。
    • 我设法使这个工作达到一定程度,尽管单元的数量并不总是正确的。已经用不同的方法解决了这个问题。
    【解决方案2】:

    我在 Repeater_ItemCreated 方法中解决了这个问题。使用 css 类来设置对齐方式。

    var col = new BoundField
    {
     HeaderText = column.ColumnName,
     DataField = column.ColumnName,
    };
    if(column.DataType == typeof(int))
    col.ControlStyle.CssClass = "numericCell";
    

    【讨论】:

      猜你喜欢
      • 2021-10-14
      • 2011-08-04
      • 1970-01-01
      • 2012-09-29
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多