目前的效果大概是id name sex type us
1 123 1 2 313-11
1 123 1 3 113-21
2 21 2 3 322-10
想实现的效果 是id name sex type us
1 123 1 2-3 313-11/113-21
2 21 2 3 322-10
应该能看懂吧。 求 实现
1 123 1 2 313-11
1 123 1 3 113-21
2 21 2 3 322-10
想实现的效果 是id name sex type us
1 123 1 2-3 313-11/113-21
2 21 2 3 322-10
应该能看懂吧。 求 实现
取出相同记录 然后拼接us 字段,最后插入
在取数据源时 先以id进行 group by
是不是我表达问题。 都说不到关键呢? 我是想让在 GRIDVIEW中的 有重复id的后几列 自加 起来
就是 没个id 只出现一次
{GridView1.Rows[i]
.......
http://blog.csdn.net/21aspnet/archive/2007/03/25/1540301.aspx
自己找把
public static void CellTogetherArry(int[] cellIndex, GridView gvTemp)
{
for (int x = 0; x < cellIndex.Length; x++)
{
int i = 0;
int rowSpanNum = 1;
while (i < gvTemp.Rows.Count - 1)
{
GridViewRow gvr = gvTemp.Rows[i];
for (++i; i < gvTemp.Rows.Count; i++)
{
GridViewRow gvrNext = gvTemp.Rows[i];
if (gvr.Cells[cellIndex[x]].Text == gvrNext.Cells[cellIndex[x]].Text)
{ if ((cellIndex[x] >= 1) &&
(gvr.Cells[cellIndex[x] - 1].Text != gvrNext.Cells[cellIndex[x] - 1].Text))
{
gvr.Cells[cellIndex[x]].RowSpan = rowSpanNum;
rowSpanNum = 1;
break;
}
else
{
gvrNext.Cells[cellIndex[x]].Visible = false;
rowSpanNum++;
}
}
else
{
gvr.Cells[cellIndex[x]].RowSpan = rowSpanNum;
rowSpanNum = 1;
break;
}
if (i == gvTemp.Rows.Count - 1)
{
gvr.Cells[cellIndex[x]].RowSpan = rowSpanNum;
}
}
}
}
} public static void GroupRows(GridView p_GridView, int[] p_ColumnsIndex)
{
int _Count = p_GridView.Rows.Count;
string[] _TempText = new string[p_ColumnsIndex.Length];
int[] _RowIndex = new int[p_ColumnsIndex.Length];
for (int i = 0; i != _Count; i++)
{
string _CellText = string.Empty;
for (int z = 0; z != p_ColumnsIndex.Length; z++)
{
_CellText += p_GridView.Rows[i].Cells[p_ColumnsIndex[z]].Text;
if (_TempText[z] == _CellText)
{
p_GridView.Rows[i].Cells[p_ColumnsIndex[z]].Visible = false;
p_GridView.Rows[_RowIndex[z]].Cells[p_ColumnsIndex[z]].RowSpan++;
}
else
{
_RowIndex[z] = i;
_TempText[z] = _CellText;
p_GridView.Rows[_RowIndex[z]].Cells[p_ColumnsIndex[z]].RowSpan = 1;
}
}
}
}
#endregion调用: int[] cells = new int[] { 0, 1, 2, 3, 4 };
GroupRows(GridView1, cells);
cells指要合并的单元格
然后, 绑定gridview(id name sex type us),
其中us数据来自select us from 表2 group by id
这样就可以
id name
1 1
1 2
实现为
id name
1 1-2
<head runat="server">
<title>测试</title>
<script type="text/javascript">
window.onload=function(){
var tr = document.getElementById("GridView2").getElementsByTagName("tr");
for(var i=0;i<tr.length;i++){
var td = tr[i].getElementsByTagName("td");
if(td.length>0){
var id = td[0].innerHTML;
var name = td[1].innerHTML;
for(var j=i+1;j<tr.length;j++){
var comparetd = tr[j].getElementsByTagName("td");
var compareid = comparetd[0].innerHTML;
var comparename = comparetd[1].innerHTML;
if(id==compareid){
name=name+"-"+comparename;
td[1].innerHTML=name;
document.getElementById("GridView2").getElementsByTagName("tbody")[0].removeChild(tr[j]);
}
}
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" >
<Columns>
<asp:BoundField HeaderText="ID" DataField="ID" />
<asp:BoundField HeaderText="Name" DataField="Name" />
</Columns>
</asp:GridView>
</form>
</body>
</html> protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView2.DataSource = getTable();
GridView2.DataBind();
}
}
public DataTable getTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(System.Int32));
dt.Columns.Add("Name", typeof(System.String));
DataRow row = dt.NewRow();
row[0] = 1;
row[1] = 1;
dt.Rows.Add(row);
DataRow row1 = dt.NewRow();
row1[0] = 1;
row1[1] = 2;
dt.Rows.Add(row1);
DataRow row2 = dt.NewRow();
row2[0] = 2;
row2[1] = 2;
dt.Rows.Add(row2);
DataRow row3 = dt.NewRow();
row3[0] = 2;
row3[1] = 3;
dt.Rows.Add(row3);
return dt;
}