现有视图格式/数据如下:
Device    TypeName      TypeID
A             T1                 1
B             T1                 1 
C            T1                 1
D            T2                2从中取出数据后放入DataSet中, 现要在DataGrid中显示, 每个TypeID为一行记录. 也就是表中的A B C要放在一格之中. 请问将DataSet中的数据怎样处理,才能正确显示?

解决方案 »

  1.   

    private void BindGrid()
    {
        UserDB grid1=new UserDB();
        DataGrid1.DataSource=grid1.ReturnDataSet("select * from xbzy order by xbmc");
        DataGrid1.DataBind();
        SpanGrid();
    }
    //实现相同数据合并行
    private void SpanGrid()
    {
        int intSpan=0;
        int nowSpan=0;
        string strTemp="";
        for(int i=0;i<DataGrid1.Items.Count;)
        {
    intSpan=1;
    strTemp=DataGrid1.Items[i].Cells[1].Text.ToString();
    for(int j=i+1;j<DataGrid1.Items.Count;j++)
    {
    if(string.Compare(strTemp,DataGrid1.Items[j].Cells[1].Text)==0)
    {
    intSpan++;
    DataGrid1.Items[i].Cells[1].RowSpan=intSpan;
    DataGrid1.Items[j].Cells[1].Visible=false;
    }
    else{break;}
    }
    nowSpan+=intSpan;
    i=nowSpan-1;
         }
    }QQ:252887502  MSN:[email protected]
    如果还不清楚可以谈谈
      

  2.   

    本DataGrid最后显示的样式是这样的:
    Device    TypeName      TypeID
    A,B,C            T1                 1
    D                  T2                2
    不知道拆分DataSet或在DAO中拼接sql语句能否实现?
      

  3.   

    在存储过程中实现即可.select Distinct TypeID,TypeName,dbo.FunctionGetDevice(TypeID) as Device from Table然后在函数FunctionGetDevice中根据传入的类型取所有Device拼成字符串返回即可.
      

  4.   

    dc = new DataColumn("Name", Type.GetType("System.String"),"");
    dt = ds.Tables["Type"];
    dt.Columns.Add(dc); dtTemp = new DataTable();
    dtTemp = dt.Copy();
    dt.Clear();

    string strTempName,strTempNo,strTempPro;
    foreach(DataRow row in dtTemp.Rows)
    {
    strTempPro = "";
    strTempName = row["Name"].ToString();
    strTempNo = row["SerialNo"].ToString(); foreach(DataRow row2 in ds.Tables["VW_EquipTypeAndExtProperty"].Rows)
    {
    if(strTempName.Equals(row2["TypeName"].ToString()))
    {
    if(strTempPro.Equals(""))
    {
    strTempPro += row2["PropertyName"].ToString();
    }
    else
    {
    strTempPro += "," + row2["PropertyName"].ToString();
    }

    }
    // else
    // {
    // break;
    // }
    } DataRow r=dt.NewRow();
    r["Name"] = strTempName;
    r["SerialNo"] = strTempNo;
    r["PropertyName"] = strTempPro;
    dt.Rows.Add(r);
    } ds.AcceptChanges();
    //************************************************************************
    return this.ds;