比如我有数据
Name Sale Date
小五 1000 2007-10-1
小五 2000 2007-10-2
小五 3000 2007-10-3
小李 1000 2007-10-3
小五 3000 2007-10-4然后我要绑定成
-----------------------------------------
|Name | Sale | Date
|-------------------------------------
|小五 | 1000 | 2007-10-1
| |--------|------------------------------
| | 2000 | 2007-10-2
| |--------|-------------------------
| | 3000 | 2007-10-3
|-----|--------|-----------------------
|小李 | 1000 | 2007-10-3
------|--------|-----------------------
|小五 | 3000 | 2007-10-4
------|--------|------------------------
这里主要就是小五上面那那几行,也就是说如果在一起的行的Name是一样的话那行就Rollspan掉他们只留一个
这里如果是显示成
-----------------------------------------
|Name | Sale | Date
|-------------------------------------
|小五 | 1000 | 2007-10-1
|-----|--------|------------------------------
| | 2000 | 2007-10-2
|-----|--------|-------------------------
| | 3000 | 2007-10-3
|-----|--------|-----------------------
|小李 | 1000 | 2007-10-3
------|--------|-----------------------
|小五 | 3000 | 2007-10-4
------|--------|------------------------
这样的话我就还有办法
但上面那样子实在想不出什么办法来谢谢
Name Sale Date
小五 1000 2007-10-1
小五 2000 2007-10-2
小五 3000 2007-10-3
小李 1000 2007-10-3
小五 3000 2007-10-4然后我要绑定成
-----------------------------------------
|Name | Sale | Date
|-------------------------------------
|小五 | 1000 | 2007-10-1
| |--------|------------------------------
| | 2000 | 2007-10-2
| |--------|-------------------------
| | 3000 | 2007-10-3
|-----|--------|-----------------------
|小李 | 1000 | 2007-10-3
------|--------|-----------------------
|小五 | 3000 | 2007-10-4
------|--------|------------------------
这里主要就是小五上面那那几行,也就是说如果在一起的行的Name是一样的话那行就Rollspan掉他们只留一个
这里如果是显示成
-----------------------------------------
|Name | Sale | Date
|-------------------------------------
|小五 | 1000 | 2007-10-1
|-----|--------|------------------------------
| | 2000 | 2007-10-2
|-----|--------|-------------------------
| | 3000 | 2007-10-3
|-----|--------|-----------------------
|小李 | 1000 | 2007-10-3
------|--------|-----------------------
|小五 | 3000 | 2007-10-4
------|--------|------------------------
这样的话我就还有办法
但上面那样子实在想不出什么办法来谢谢
解决方案 »
- 正则表达式问题求解...顺便散分!
- Button_Click 与 Page_Load 执行顺序
- 怎麼刪除datatable中的列
- gridview 显示问题
- asp.net新手入门的简单问题
- 求助:sql小问题
- 怎样实现这个:点击网页链接,打开客户端程序?急救!!!
- 服务器端产生javascript时,如何在脚本中换行?
- 如何在一个类的实例里访问另一个类?(两个都是在同一个web窗体里的页面)
- 应用存储过程的问题,输入参数不能为空???
- dropdownlist选择表后gridview显示出所选,要怎么联动呢?
- 如何在SQL SERVER2005下建立查询通知供AggregateCacheDependenc 使用
能不能改用Table控件 然后合并行来解决?
普通绑定好之后
你判断上一行的name如果和本行的相同
本行name替换成空
加一函数就可以绕过去
严重
up
普通绑定好之后
你判断上一行的name如果和本行的相同
本行name替换成空
加一函数就可以绕过去
------------------------------------------------------------
我做过BI,
在reporting里常遇到这种情况,
具体的做法就是和zhchg6666想的一样。就是在每个显示内容上加个时间。
判断是否和上一行一样。
如果一样显示为空。
当绑定数据之后,再调用一个自定义的函数,就叫BindSet()吧.
BindSet()
{
string strTemp="";
foreach(遍历GridView,取得name列)
{
if(strTemp=="当前name")
{
设置name.text="";
}
strTemp="上一个name" }
}
基本思路是这样.这样会损失一点效率.
还有其它方法,我要去吃饭了,不详细写了.
<%@ Import Namespace="System.Data" %><%-- http://community.csdn.net/Expert/TopicView3.asp?id=5720389 --%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"> protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
LoadProductData();
}
}
void LoadProductData()
{
DataTable dt = CreateSampleProductData(); GridView1.DataSource = dt;
GridView1.DataBind();
} #region sample data static DataTable CreateSampleProductData()
{
DataTable tbl = new DataTable("Products"); tbl.Columns.Add("ProductID", typeof(int));
tbl.Columns.Add("ProductName", typeof(string));
tbl.Columns.Add("UnitPrice", typeof(decimal));
tbl.Columns.Add("CategoryID", typeof(int)); tbl.Rows.Add(1, "Chai", 18, 1);
tbl.Rows.Add(2, "Chang", 19, 1);
tbl.Rows.Add(3, "Aniseed Syrup", 10, 2);
tbl.Rows.Add(4, "Chef Anton's Cajun Seasoning", 22, 2);
tbl.Rows.Add(5, "Chef Anton's Gumbo Mix", 21.35, 2);
tbl.Rows.Add(47, "Zaanse koeken", 9.5, 3);
tbl.Rows.Add(48, "Chocolade", 12.75, 3);
tbl.Rows.Add(49, "Maxilaku", 20, 3); return tbl;
} #endregion
int toMergedRows = 1;
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow && e.Row.RowIndex > 0) {
DataRowView currentRowView = e.Row.DataItem as DataRowView;
DataView dv = currentRowView.DataView;
if((int)currentRowView["CategoryId"] == (int)dv[e.Row.DataItemIndex - 1]["CategoryId"]) {
toMergedRows++;
}
else {
GridView1.Rows[e.Row.RowIndex - toMergedRows].Cells[0].RowSpan = toMergedRows;
for(int ndx = e.Row.RowIndex - toMergedRows + 1; ndx < e.Row.RowIndex; ndx++) {
GridView1.Rows[ndx].Cells.RemoveAt(0);
}
toMergedRows = 1;
} // 已到最后一行
if(e.Row.DataItemIndex == dv.Count - 1 && toMergedRows !=1) {
GridView1.Rows[e.Row.RowIndex - toMergedRows + 1].Cells[0].RowSpan = toMergedRows;
for(int ndx = e.Row.RowIndex - toMergedRows + 2; ndx < e.Row.RowIndex; ndx++) {
GridView1.Rows[ndx].Cells.RemoveAt(0);
}
e.Row.Cells.RemoveAt(0);
}
}
}
</script><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>CSDN_MergeGridViewRow2</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="CategoryID" HeaderText="CategoryID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName" />
<asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>