【问题标题】:Gridview with row headers带有行标题的 Gridview
【发布时间】:2011-02-04 15:39:09
【问题描述】:

我在一个新项目中使用 ASP.NET3.5 gridview 控件。我的问题是 gridview 以基本表格格式显示数据,而我想要一个带有行标题/分组行为的网格。这方面的一个例子是 Outlook Web 界面,它可以按日期对电子邮件进行分组,并允许您选择要显示的单个电子邮件。

我的问题:我看不出如何使用 Gridview 轻松完成这项工作?我确实找到了一个名为 Telerik 的产品,它有一个看似花哨的 Gridview,但我犹豫是否要花钱购买一个现在也将我锁定在第三方框架中的组件......

【问题讨论】:

  • 所以我最好使用下面的选项,而不是利用像 Telerik 这样的框架?

标签: c# asp.net gridview telerik


【解决方案1】:

我记得以前曾为这样的问题苦苦挣扎,我可以同情在该主题上缺乏帮助,所以如果你想要一个 gridview,你可以这样做:

将 OnRowDataBound 事件添加到您的 gridview:

OnRowDataBound="grv_RowDataBound"

在后面的代码中添加这样的内容:

private DateTime currentDate;
private int extraCount;

protected void grv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //assuming the cell with index 5 is the cell with the Date in it
        if (currentDate != DateTime.Parse(e.Row.Cells[5].Text))
        {
            //making a header row (so it looks different to the other rows)
            var row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert);
            var headerCell = new TableHeaderCell();
            headerCell.ColumnSpan = 3; //however many columns you have in your gridview
            headerCell.Text = e.Row.Cells[5].Text;
            row.Cells.Add(headerCell);
            currentDate = DateTime.Parse(e.Row.Cells[5].Text);
            extraCount++;
            grvMortgages.Controls[0].Controls.AddAt(e.Row.RowIndex + extraCount, row);
        }
    }
}

【讨论】:

    【解决方案2】:

    有关分组功能,请查看以下示例:http://mattberseth.com/blog/2008/01/building_a_grouping_grid_with.html

    ListView 比 GridView 更容易做到这一点。

    【讨论】:

      【解决方案3】:

      Asp.Net GridView 控件是 Asp.Net 服务器控件中数据控件系列的一部分。它最适合用于显示表格数据。默认情况下不支持行分组等效果。就像你提到的那样,有市场上提供具有这些额外功能的控件的第三方供应商。

      大多数时候使用 asp.net 服务器控件,提供开箱即用的功能需要通过从原始控件继承来创建自定义控件。例如如果您需要对 gridview 的所有列进行排序,并且还需要突出显示当前选定的列,那么最好通过创建自己的控件来完成,该控件又继承自 Asp.Net GridView 控件。网络上有资源解释了如何做到这一点完成。

      【讨论】:

        猜你喜欢
        • 2015-11-28
        • 2019-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-13
        • 1970-01-01
        相关资源
        最近更新 更多