我 dt  里 存的数据 是 这样的
Name  ,  percent          Oid     MONEY
A,B,C     0.2,0.3,0.4    1        1000
A,B,D     0.3,0.1,0.5     2       500我 想 给他们显示成这样NAME      PERCENT      OID         MONEY
A           0.2         1           1000*0.2  后的值
B            0.3         1           1000* 0.3 后的值
......
依次类推 ,  这样 如何实现 ,求高手 给个思路

解决方案 »

  1.   

    遍历,自己根据percent 解析出来,可以用split分割成数组,然后自己组合datatable
      

  2.   

    笨方法~~        List<Model> lst = new List<Model>();
            foreach (DataRow dr in dt.Rows)
            {
                string[] strsName = dr["Name"].ToString().Split(',');
                string[] strsPercent = dr["percent"].ToString().Split(',');
                string strOid = dr["Oid"].ToString();
                decimal intMoney = decimal.Parse(dr["Money"].ToString());
                lst.AddRange(strsName.Select((t, i) => new Model
                                                           {
                                                               Name = t,
                                                               Percent = strsPercent[i],
                                                               Oid = strOid,
                                                               Money = intMoney * decimal.Parse(strsPercent[i])
                                                           }));
            }
      

  3.   

    先拆分为单个的然后自己组合dataTable
      

  4.   


    private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
    {
    DataGridView dgv = (DataGridView)sender;      
    if( dgv.CurrentCell.ColumnIndex == 1)
    {
         dgv.CurrentCell.Value = dgv.CurrentCell.Value.ToString().Substring(0,dgv.CurrentCell.Value.ToString().Index(","))
    }
    if( dgv.CurrentCell.ColumnIndex == 3)
    {
           dgv.CurrentCell.Value =   dgv.CurrentCell.Value * dgv.CurrentRow.Cells[1].Value;
    }
    }
      

  5.   

    按你的要求写一个DataTable dtbl = new DataTable();
                dtbl.Columns.Add("Name", typeof(string));
                dtbl.Columns.Add("percent", typeof(string));
                dtbl.Columns.Add("Oid", typeof(int));
                dtbl.Columns.Add("MONEY", typeof(string));            DataRow dr =dtbl.NewRow();
                dr["Name"] = "A,B,C";
                dr["percent"] = "0.2,0.3,0.4";
                dr["Oid"] = 1;
                dr["MONEY"] = "1000";
                dtbl.Rows.InsertAt(dr, 0);            DataRow dr1 = dtbl.NewRow();
                dr1["Name"] = "A,B,D";
                dr1["percent"] = "0.3,0.1,0.5";
                dr1["Oid"] = 2;
                dr1["MONEY"] = "500";
                dtbl.Rows.InsertAt(dr1, 1);            DataTable dtblResult = dtbl.Clone();            foreach (DataRow row in dtbl.Rows)
                {
                    for (int i = 0; i < dr["Name"].ToString().Split(',').Length; i++)
                    {
                        DataRow drNew = dtblResult.NewRow();
                        drNew["Name"] = row["Name"].ToString().Split(',')[i].ToString();
                        drNew["percent"] = row["percent"].ToString().Split(',')[i].ToString();
                        drNew["Oid"] = row["Oid"].ToString();
                        drNew["MONEY"] = row["MONEY"].ToString() + "*" + row["percent"].ToString().Split(',')[i].ToString();
                        dtblResult.Rows.Add(drNew);
                    }
                }