带有行标题的Gridview

时间:2010-04-06 02:08:33

标签: c# asp.net gridview telerik

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

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

3 个答案:

答案 0 :(得分: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);
        }
    }
}

答案 1 :(得分:0)

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

大部分时间使用asp.net服务器控件,提供开箱即用功能需要通过继承原始服务器来创建自定义控件。如果您需要对gridview的所有列进行排序,并且还需要突出显示当前选定的列,那么最好通过创建自己的控件来完成,该控件继承自Asp.Net GridView控件。网上有资源可以解释这是如何实现的完成。

答案 2 :(得分:-1)

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

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