首页 新闻 会员 周边

急!!!如何控制两个datagridview绑定同一个属性类的问题~~

0
悬赏园豆:50 [已解决问题] 解决于 2010-08-30 20:19


在一个FORM里面放了两个datagridview,一个显示整合前的数据,另一个显示整合后的数据,选定整合前的几条数据,点选按钮事件处理吗然后把处理结果显示在整合后datagridview里面,现在有一个问题就是
整合后的datagridview里的值也反映在整合前的datagridview里了,等于说是把整合前的数据给覆盖了。。。。

代码是这样写的:

把整合前的的数据绑定EVTDbData属性类显示:
 List<JAM_EVTDbData> result = new List<JAM_EVTDbData>();
  jamData = LoadJamData.LoadData("JamData.csv");
  for (int i = 0; i < jamData.Count; i++)
  {
  result.Add(jamData[i]);
  }
  this.JamGridView.DataSource = result;

JAM_EVTDbData属性类:
 public class JAM_EVTDbData : CommonQueData
  {
   
  public string INSERT_ID
  {
  get;
  set;
  }

   
  public DateTime INSERT_DATE
  {
  get;
  set;
  }
。。。。。。
。。。。。。。。。

在datagridview里的设置中把DataPropertyName=EVENT_TYPE 以按属性绑定。。。。。



然后 放到某接口调用,返回的也是个 List型的数组:
 List<CommonQueData> ltMergedOut = new List<CommonQueData>(); 
 m_ES.Merge(ltSendData, ltMergedOut);

最后我把该数组绑定在整合后的gridview里面显示:

 List<JAM_EVTDbData> jamResult = new List<JAM_EVTDbData>();
 for (int i = 0; i < ltMergedOut.Count; i++)
  {
 CommonQueData receivedQue = argLtReceivedQue.ElementAt<CommonQueData>(i);
 jamResult.Add((JAM_EVTDbData)receivedQue);

}
this.Jam1GridView.DataSource = jamResult;


以上就是这么写的··我现在的要求是:不改变两个datagridview绑定同一个JAM_EVTDbData属性的前提下··如何不覆盖
整合前的datagridview里的值?

zuowohanjiang的主页 zuowohanjiang | 初学一级 | 园豆:100
提问于:2010-08-30 15:55
< >
分享
最佳答案
0

你选中的数据在操作前先Clone副本,然后对副本修改,最后返回给第二个DataGridView 的 List,将包含这些修改后的项.

CommonQueData receivedQue =(CommonQueData)( (ICloneable)argLtReceivedQue.ElementAt<CommonQueData>(i)).Clone();

你的 JAM_EVTDbData 和 CommonQueData 得实现 ICloneable 接口.

收获园豆:50
Launcher | 高人七级 |园豆:45045 | 2010-08-30 16:18
我不能随便更改共通文件···因为 JAM_EVTDbData 和 CommonQueData 是别人按规定写好的·
zuowohanjiang | 园豆:100 (初学一级) | 2010-08-30 16:39
@zuowohanjiang:我说实现ICloneable,是标准的做法,其实就是新建一个 JAM_EVTDbData ,然后把源 JAM_EVTDbData 的属性的值赋给新的 JAM_EVTDbData .所以,你可以这样做: public static JAM_EVTDbData GetCopy(JAM_EVTDbData data) { return new JAM_EVTDbData{xxx =data.xxx,yyy=data.yyy}; }
Launcher | 园豆:45045 (高人七级) | 2010-08-30 17:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册