我在新项目中使用ASP.NET3.5 gridview控件。我的问题是gridview以基本表格格式呈现数据,而我想要一个具有行标题/分组行为的网格。一个例子是Outlook Web界面,它可以按日期对电子邮件进行分组,并允许您选择要显示的单个电子邮件。
我的问题:我看不出如何使用Gridview轻松完成这项工作?我确实找到了一款名为Telerik的产品,它有一个看似花哨的Gridview,但我对在单个组件上花钱犹豫不决,这些组件现在也把我锁定在第三方框架中......
答案 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更容易做到这一点。