当前位置: 代码迷 >> ASP.NET >> 关于多行多列合并为单行单列,数据绑定解决思路
  详细解决方案

关于多行多列合并为单行单列,数据绑定解决思路

热度:439   发布时间:2013-02-25 00:00:00.0
关于多行多列合并为单行单列,数据绑定
例如:
原表:
id name values
1 张三 A
2 李四 B
3 张三 C
显示为:
id name values
1 张三 A|C
2 李四 B


这个方法该如何写啊。。。。我用的是access数据库。
要求:不适用SQL函数及access函数

只用数据合并..我没多少分,抱歉啊

------解决方案--------------------------------------------------------
就是八楼的思路,我刚写了代码你看看吧,如果错了我再改改
C# code
//DataTable数据添加            Hashtable ht = new Hashtable();            DataTable dt = new DataTable();            DataColumn dc = new DataColumn("id");            dt.Columns.Add(dc);            dc = new DataColumn("name");            dt.Columns.Add(dc);            dc = new DataColumn("values");            dt.Columns.Add(dc);            DataRow dr = dt.NewRow();            dr["id"] = 1;            dr["name"] = "张三";            dr["values"] = "A";            dt.Rows.Add(dr);            dr = dt.NewRow();            dr["id"] = 2;            dr["name"] = "李四";            dr["values"] = "B";            dt.Rows.Add(dr);            dr = dt.NewRow();            dr["id"] = 3;            dr["name"] = "张三";            dr["values"] = "C";            dt.Rows.Add(dr);            dataGridView1.DataSource = dt;            //合并            for (int i = 0; i < dt.Rows.Count; i++ )            {                if (ht.ContainsKey(dt.Rows[i]["name"]))                {                    //获取行索引                    int index = (int)ht[dt.Rows[i]["name"]];                    //获取最近一次的值(对应values)                    string str = (string)dt.Rows[index]["values"];                    //拼接                    dt.Rows[index]["values"] = str + "|" + dt.Rows[i]["values"];                    //删除重复行                    dt.Rows.RemoveAt(i);                    //调整索引减1                    i--;                }                else                {                    //保存名称以及行索引                    ht.Add(dt.Rows[i]["name"], i);                }
------解决方案--------------------------------------------------------
我也写下我的思路:
string str;

DateTable dt=?(这里是你获取的数据源)
List<string> s=new list<string>();
for (int i = 0; i < HQ_dt.Rows.Count; i++)
{
 s.Add(dt.Rows[i]["values"].ToString());
if(s.Contains(dt.Rows[i]["values"].ToString()))
{
 str=dt.Rows[i][i].ToString()+dt.Rows[i]["values"].ToString();



  相关解决方案