在ListView 的Item[i]绑定Table1的列名,在Item[i].SubItem上绑定Table2的列名,
循环获得Table1的DataRow1 和Table2的DataRow2.通过Row1[Item[i].Text] = Row2[Item[i].SubItem[i].Text]这样的赋值方式.添加Table1.Rows.add(Row1[Item[i].Text])插入到Table1中.
问题是:最后在这个循环中DataRow只取得一行.循环嵌套最终死循环,插入失败.请问可以用循环插入行中的列名的方式进行数据绑定,如何控制列名相对应呢?

解决方案 »

  1.   

    代码如下:
    SubcontractDataService service = new SubcontractDataService();
    DataTable dt1 = service.GetLocalDestSubcontractInfo(Suite.GetConnectionStringByDest);
    ArrayList list = new ArrayList(); if(dt1.Rows.Count > 0)
    {
       for(int i=0;i<dt1.Rows.Count;i++)
       {    
         DataRow row1 = dt1.Rows[i];
         string id = row1["ContractId"].ToString();
         DataTable dt2 = service.GetLocalhostSubcontractInfoByContractID(id,Suite.GetLocalHostConnection);
                 //以存在数据跳过
       if(dt2.Rows.Count == 0 )
       {

        DataRow row2 = dt2.NewRow();  
       for(int one=0;one<listViewResult.Items[one].SubItems.Count;one++)
         {   
    DataColumn column1 = dt1.Columns[listViewResult.Items[one].Text]; DataColumn column2 = dt2.Columns[listViewResult.Items[one].SubItems[one].Text];
              row2[column2.ToString()] = row1[column1.ToString()] ;
    list.Add(row2[column2.ToString()]);
                     //ID 表中总共几列判断是否插满
                     if(list.Count == ID)
    {  
    dt2.Rows.Add(row2);
    service.insertLocalhost(dt2);
    }


         }
          }
    }
    }