在一个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里的值?
你选中的数据在操作前先Clone副本,然后对副本修改,最后返回给第二个DataGridView 的 List,将包含这些修改后的项.
CommonQueData receivedQue =(CommonQueData)( (ICloneable)argLtReceivedQue.ElementAt<CommonQueData>(i)).Clone();
你的 JAM_EVTDbData 和 CommonQueData 得实现 ICloneable 接口.