gridview合并列
合并这个合并了很久了,在网上也找了很多代码看,还是实现不了我想要的效果。
请各位大侠帮我看看,最好希望哪位能帮我写一下代码了,非常感谢。
要求合并1和2列中相同,相邻的单元格。
gridview
excel:
[解决办法]
你有来了,上好几次你纠结怎么统计人数,现在有纠结显示样式了啊,呵呵。
你的这个可以通过Repeater嵌套就可以实现了。
[解决办法]
用repeater不嵌套也可以,
主要就是第一列的合并。
<tr>
<%#GetFirstTd(Container) %>
<td>...</td>
.....
</tr>
string sLastName = string.Empty;
protected string GetFirstTd(RepeaterItem oItem)
{
string Name = ((DataRowView)oItem.DataItem)["课别"].ToString();
if (Name == sLastName) return string.Empty;
else
{
DataView dv = new DataView( ((DataRowView)oItem.DataItem).DataView.Table);
dv.RowFilter = "课别='"+Name+"'";
sLastName = Name;
return "<td rowspan ='" + dv.Count.ToString() + "'>" + Name + "</td>";
}
}
//从grd的第rowIndex行colIndex列单元格以下count行合并
public static void 合并行(this GridView grd, int rowIndex, int colIndex, int count)
{
grd.Rows[rowIndex].Cells[colIndex].RowSpan = count;
for (var i = rowIndex + 1; i < rowIndex + count; i++)
grd.Rows[i].Cells[colIndex].Visible = false;
}
//从grd的第rowIndex行colIndex列单元格向右count列合并
public static void 合并列(this GridView grd, int rowIndex, int colIndex, int count)
{
grd.Rows[rowIndex].Cells[colIndex].ColumnSpan = count;
for (var i = 1; i < count; i++)
grd.Rows[rowIndex].Cells[colIndex + i].Visible = false;
}
<html>
<head>
<script src="jquery.js" language="javascript" ></script>
<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
}
#gridview, #gridview td { border:1px #ccc solid; border-collapse:collapse; }
-->
</style></head>
<body>
<table id="gridview" width="386" border="0" cellspacing="0" cellpadding="6">
<tr>
<td width="59" align="center"><strong>课别</strong></td>
<td width="76" align="center"><strong>班别</strong></td>
<td width="73" align="center"><strong>班次</strong></td>
<td width="130" align="center"><strong>出勤时间</strong></td>
</tr>
<tr>
<td>陈伟勋</td>
<td>一班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陈伟勋</td>
<td>一班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陈伟勋</td>
<td>两班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陈伟勋</td>
<td>两班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陈伟勋</td>
<td>两班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陈伟勋</td>
<td>三班制</td>
<td>早班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陈伟勋</td>
<td>三班制</td>
<td>中班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陈伟勋</td>
<td>三班制</td>
<td>晚班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>张文军</td>
<td>一班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>张文军</td>
<td>两班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>张文军</td>
<td>两班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>张文军</td>
<td>两班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>张文军</td>
<td>三班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>张文军</td>
<td>三班制</td>
<td>中班</td>
<td>2011-09-09</td>
</tr>
</table>
<script>
var grid = $("#gridview");
var rowCount = grid.find("tr").length - 1;
var flagRow = grid.find("tr:eq("+rowCount+")").find("td:eq(0)").html();
var sp = 0;
for(var i = rowCount; i >=0; i--) {
var tempRow = grid.find("tr:eq("+i+")");
if(flagRow == tempRow.find("td:eq(0)").html()) {
tempRow.find("td:eq(0)").remove();
}
else {
$("<td/>").attr("rowspan", rowCount-i-sp).html(flagRow).prependTo(tempRow.parent().find("tr:eq("+(i+1)+")"));
flagRow = tempRow.find("td:eq(0)").html();
sp = rowCount-i;
if(i != 0) {
tempRow.find("td:eq(0)").remove();
}
}
}
</script>
</body>
</html>
if (tCell.Text.Trim() == tCell_previous.Text.Trim())
{
tCell.Visible = false;
tCell_previous.RowSpan += tCell.RowSpan;
}
}
}
一个合并gridview的。
[解决办法]
我是觉得这种表格用GridView不太方便。我一般都是在后台写html的table的。像下面这种
前面单元格占的行根据后面单元格来确定的话,用GridView的效率并不怎么好。
[解决办法]
有时间研究研究用html的表格显示
[解决办法]
http://blog.csdn.net/21aspnet/article/details/1540301
看看他的博客gridview72般绝技,它里面讲的有合并表头,是3行3列.