首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

gridview合并相同行请问

2012-09-13 
gridview合并相同行请教!请教下高手如何合并gridview相同行?结果像这样的?谢谢!~[解决办法]GridView嵌套!!

gridview合并相同行请教!
请教下高手如何合并gridview相同行?

结果像这样的?

谢谢!~

[解决办法]
GridView嵌套!!
[解决办法]
用模板列,自定义绑定方式可以做到
[解决办法]
报表工具可以实现
,也可以在数据库中处理
[解决办法]
用这个
 public void mergetable(string console)
{
for (int i = ProductList.Items.Count - 1; i > 0; i--)
{
HtmlTableCell oCell_previous = ProductList.Items[i - 1].FindControl(console) as HtmlTableCell;
HtmlTableCell oCell = ProductList.Items[i].FindControl(console) as HtmlTableCell;

oCell.RowSpan = (oCell.RowSpan == -1) ? 1 : oCell.RowSpan;
oCell_previous.RowSpan = (oCell_previous.RowSpan == -1) ? 1 : oCell_previous.RowSpan;

if (oCell.InnerText == oCell_previous.InnerText)
{
oCell.Visible = false;
oCell_previous.RowSpan += oCell.RowSpan;
}
}

}
调用方法
protected void ProductList_PreRender(object sender, EventArgs e)
{
mergetable("leixing");
mergetable("pinpai");
}

前面aspx
<asp:Repeater ID="ProductList" runat="server" OnPreRender="ProductList_PreRender" OnItemDataBound="ProductList_ItemDataBound">
<ItemTemplate>
<tr>
<td align="center" valign="middle" bgcolor="#FFFFFF" id="leixing" runat="server"><%#Eval("brandname") %></td>
<td align="center" valign="middle" bgcolor="#FFFFFF" id="pinpai" runat="server"><%#Eval("producttypename") %></td>
<td align="left" valign="middle" bgcolor="#FFFFFF"><a href='<%#"jieshao.aspx?id="+Eval("id") %>' target="_blank"><%#Eval("name") %></a> </td>
<td align="center" valign="middle" bgcolor="#FFFFFF">
<div style="margin-top:-20px;"><table width="100" border="0" cellpadding="1" cellspacing="0">
<tr>
<td width="95" align="center" valign="top"><img src="../images/line.gif" width="45" height="1" alt="line" /></td>
<td width="25" rowspan="2" align="center" valign="top" id="pdf"><asp:Literal ID="pdfurl" runat="server"></asp:Literal></td>
</tr>
<tr>
<td align="center" valign="top" id="tuxiang"><input type="hidden" id="hiddenid" value='<%#Eval("id") %>' runat="server" /><input type="hidden" id="hiddenname" value='<%#Eval("name") %>' runat="server" />
<asp:Literal ID="picurl" runat="server"></asp:Literal> </td>
</tr>
</table>
</div>
</td>


</tr> 
</ItemTemplate>
</asp:Repeater>
[解决办法]
//合併相同數據的列
public void FormatGridView(int iCell, GridView gv)
{
string Site = "";
int iTempSite = -1;
int[] nsite = new int[5000];
int[] ndept = new int[5000];
foreach (GridViewRow gvr in gv.Rows)
{
if (!Site.EndsWith(gvr.Cells[iCell].Text.Trim() + ";"))
{
Site += gvr.Cells[iCell].Text.Trim() + ";";

iTempSite++;
}
else
{
gvr.Cells[iCell].Visible = false;
nsite[iTempSite] += 1;
}
}
iTempSite = 0;
foreach (GridViewRow gvr in gv.Rows)
{
if (gvr.Cells[iCell].Visible == true)
{
gvr.Cells[iCell].RowSpan = nsite[iTempSite] + 1;

iTempSite++;
}
}
}
[解决办法]
关注
[解决办法]
/// <summary>
/// 合并GridView中某列相同信息的行(单元格) 
/// </summary>
/// <param name="GridView1">GridView</param>
/// <param name="cellNum">合并依据第几列</param>
/// <param name="cellNum">合并依据第几列中依赖的值(HiddenField保存着的)</param>
/// <param name="cellNum">合并第几列</param>
public static void GroupRows_hidden(GridView GridView1, int cellNum,string findvalue, int mergecellNum)
{

int i = 0, rowSpanNum = 1;
while (i < GridView1.Rows.Count - 1)
{
GridViewRow gvr = GridView1.Rows[i];
string str_gvr = ((HiddenField)gvr.FindControl(findvalue)).Value;

for (++i; i < GridView1.Rows.Count; i++)
{
GridViewRow gvrNext = GridView1.Rows[i];
string str_gvrNext = ((HiddenField)gvrNext.FindControl(findvalue)).Value;

if (str_gvr == str_gvrNext)
{
gvrNext.Cells[mergecellNum].Visible = false;
rowSpanNum++;
}
else
{
gvr.Cells[mergecellNum].RowSpan = rowSpanNum;
rowSpanNum = 1;
break;
}

if (i == GridView1.Rows.Count - 1)
{
gvr.Cells[mergecellNum].RowSpan = rowSpanNum;
}
}
}
}
[解决办法]
public static void SpanSingleRow(GridView gView, int GroupColumn, int Compare1) 

int i = 0; 
int j = 0; 
int rowSpan; 
string strSource = ""; 
string strTarget = ""; 

for (i = 0; i < gView.Rows.Count; i++) 

rowSpan = 1; 
strSource = gView.Rows[i].Cells[Compare1].Text; 

for (j = i + 1; j < gView.Rows.Count; j++) 



strTarget = gView.Rows[j].Cells[Compare1].Text; 

if (strSource.Length > 0 && strSource != "&nbsp;" && string.Compare(strSource, strTarget) == 0) 

rowSpan += 1; 
gView.Rows[i].Cells[GroupColumn].RowSpan = rowSpan; 
gView.Rows[j].Cells[GroupColumn].Visible = false; 

else 

break; 


i = j - 1; 


http://topic.csdn.net/u/20091111/15/1eefc2e8-1048-4809-b0f1-9c8f7bde30cb.html

热点排行