65.9K
CodeProject 正在变化。 阅读更多。
Home

在 DataGrid 中显示垂直行

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.46/5 (33投票s)

2003年9月22日

2分钟阅读

viewsIcon

288111

通过水平翻转表格,在 datagrid 中显示垂直行。

引言

上周,当我想要以水平方式(垂直行)显示一个DataGrid时,我以为DataGrid中应该有一个属性可以翻转它,但事实并非如此,或者说我没有找到它。我在网上搜索文章和论坛,但没有找到非常有用或简单的解决方案。我找到的一个解决方案是将一个DataList嵌套到一个DataSet中,但我没有觉得这很容易;另一个方案是使用一个全新的控件叫做xrepeater,但我发现我的方法比这两种都简单。

假设你有一个dataset,你想通过一个datagrid来渲染它,但你不想显示水平行,而是想垂直显示这些行。有很多情况下你可能需要这样做,例如,在多个标准(列标题)上比较两件事,或者当你只有一两行数据需要显示时,你可能会更喜欢垂直行以获得更高的清晰度。 这就是翻转表格的想法的由来。

这个想法是翻转dataset中每个表中的所有条目。 这不是一个很好的解决方案,但它有效。 我编写了一个方法,它接受一个DataSet作为参数,并返回一个新的DataSet,其中所有表都已翻转,现在你只需要将这个DataSet的表绑定到DataGrid,就像你通常做的那样,DataGrid就会渲染垂直行。

旧的 DataSet

旧的表如下所示

Column1 Column2 Column3
Neeraj Jain Carios
Tashan Yen Agknow
Andrew Ferriere 反馈

翻转后的 DataSet

新的DataTable看起来像这样

0 1 2 3
Column1 Neeraj Tashan Andrew
Column2 Jain Yen Agknow
Column3 Carios Agknow 反馈

请注意,在翻转后的表中,列标题是整数编号,因此当你将其绑定到datagrid时,设置属性ShowHeader=false;,你就可以正确渲染垂直的dataRows了。

代码

这是FlipDataSet方法的代码,它在我的代码后台文件中。 在方法FlipDataSet中,我正在翻转dataset,在BindData中,我正在将它的第一个表绑定到DataGrid。 这就是全部

private void BindData()
{
    DataSet ds = this.GetDetail(); // Some DataSet
    DataSet new_ds = FlipDataSet(ds); // Flip the DataSet
    DataView my_DataView = new_ds.Tables[0].DefaultView;
    this.my_DataGrid.DataSource = my_DataView;
    this.my_DataGrid.DataBind();
}

public DataSet FlipDataSet(DataSet my_DataSet)
{
    DataSet ds = new DataSet();
    foreach(DataTable dt in my_DataSet.Tables)
    {
        DataTable table = new DataTable();
        for(int i=0; i<=dt.Rows.Count; i++)
        {
            table.Columns.Add(Convert.ToString(i));
        }
        DataRow r;
        for(int k=0; k<dt.Columns.Count; k++)
        {
            r = table.NewRow();
            r[0] = dt.Columns[k].ToString();
            for(int j=1; j<=dt.Rows.Count; j++)
                r[j] = dt.Rows[j-1][k];
        }
        table.Rows.Add(r);
    }
    ds.Tables.Add(table);
}
return ds;
}

结论

感谢阅读。 如果你有任何问题或意见,请随时提出(我相信你会有)。

历史

  • 2003年9月22日:初始版本

许可证

这篇文章没有明确的许可证附加到它,但可能包含文章文本或下载文件本身中的使用条款。 如果有疑问,请通过下面的讨论区联系作者。 可以在这里找到作者可能使用的许可证列表。

© . All rights reserved.