我想实现当我改变Table1里面的一个数据的时候,
通知Table2,Table2会自动根据Table1里面的变化而变化Table2里面的数据的一个数据,
注意:是改变一个数据,而不是成批的更新。
大家有什么办法吗?
我想实现的其实就像Excel一样的功能,当Sheet1里面的一个数值改变的时候,
我可以让Sheet2里面的对应的某个数值发生改变,在Excel里面是通过设置公式来实现的,
DataTable是否能大致实现这种思路,望高手支招。
13 个解决方案
#1
不懂,帮顶,接分。
#2
使用事件就好了
using System;
using System.Data;
public class test
{
DataTable dt1, dt2;
public test()
{
dt1 = new DataTable();
dt2 = new DataTable();
dt1.Columns.Add("ID");
dt1.Columns.Add("AA");
dt1.Columns.Add("BB");
dt2.Columns.Add("ID");
dt2.Columns.Add("AA");
dt2.Columns.Add("BB");
dt1.Rows.Add(new object[] { "1", "Row1_1", "Row1_2" });
dt1.Rows.Add(new object[] { "2", "Row2_1", "Row2_2" });
dt2.Rows.Add(new object[] { "1", "Row1_1", "Row1_2" });
dt2.Rows.Add(new object[] { "2", "Row2_1", "Row2_2" });
dt1.RowChanged += new DataRowChangeEventHandler(dt1_RowChanged);//绑定事件,
MessageBox.Show("dt2行1列AA的值:" + dt2.Rows[0]["AA"].ToString());
dt1.Rows[0]["AA"] = "ChangeValue";//更改值后会触发dt1_RowChanged,同时更新数据相同的行
}
void dt1_RowChanged(object sender, DataRowChangeEventArgs e)
{
DataRow dr1 = e.Row;
DataRow dr2 = null;
foreach (DataRow d in dt2.Rows)
{
if (d["ID"].ToString() == dr1["ID"].ToString())//通过ID找到同一行
{
dr2 = d;
break;
}
}
if (dr2 == null) return;//找不到行
//更新行
for (int i = 1; i<dt2.Columns.Count; i++)
dr2[i] = dr1[i];
MessageBox.Show("dt2行1列AA的值:" + dt2.Rows[0]["AA"].ToString());
}
public static void Main(string []Args)
{
test t=new test();
}
}
#3
可不可以在Table1改变的时候将变更的数据放入ViewState中,
然后进行判断来更新Table2
然后进行判断来更新Table2
#4
二楼的方法可以,但不够好,好的做法是数据模型提供值改变的事件,显示部分响应,这样无论有多少个控件以任何一种方式显示数据都会很容易的实现
#5
应该是可以的,本来excel和table是相通的.
#6
学习~
#7
我的情况要比“iloveC#”的情况复杂,
我可能是Table1里面2行的数据,引起Table2里面一行数据的变化,
并且他们ID的是不同的,
我说一下我的场景吧,
Table1里面记录了原始的货币对,比如
Symbol Mid
USDHKD 10
USDJPY 2
NZDCNY 0.5
而Table2里面那是这样的,
HKDJPY 5 //我来解释一下5是怎么来的,是USDHKD/USDJPY=10/2 而来
CNYNZD 2 //我来解释一下2是怎么来的,是1/NZDCNY=1/0.5而来。
每当Table里面的数据发生变化,我要导致Table里面相应的有关系的数据发生变化。
请大家继续。
谢谢“iloveC#”的代码,很有启发。
能否像Excel一样实现定义公式那
我可能是Table1里面2行的数据,引起Table2里面一行数据的变化,
并且他们ID的是不同的,
我说一下我的场景吧,
Table1里面记录了原始的货币对,比如
Symbol Mid
USDHKD 10
USDJPY 2
NZDCNY 0.5
而Table2里面那是这样的,
HKDJPY 5 //我来解释一下5是怎么来的,是USDHKD/USDJPY=10/2 而来
CNYNZD 2 //我来解释一下2是怎么来的,是1/NZDCNY=1/0.5而来。
每当Table里面的数据发生变化,我要导致Table里面相应的有关系的数据发生变化。
请大家继续。
谢谢“iloveC#”的代码,很有启发。
能否像Excel一样实现定义公式那
#8
谢谢大家的回复。
请 24K纯爷们,纯的!!!!!!说明一下详细的步骤。
请 成长说明一下如何可以像Excel一样,我能够设置DataCoulume公式,但是DataRow怎么设置那。
再次谢谢大家。请继续。
请 24K纯爷们,纯的!!!!!!说明一下详细的步骤。
请 成长说明一下如何可以像Excel一样,我能够设置DataCoulume公式,但是DataRow怎么设置那。
再次谢谢大家。请继续。
#9
在更新前加个计算过程,算出要更新的值,关系绑定不懂咋搞,暂时没学过.....
#10
订一下
#11
用触发器!
#12
我觉得公式绑定有点困难啊,你拿.net的一个类和一个应用软件比,这个.......
#13
.Net,C#之人生无悔DataTable有触发器吗?
iloveC#.net类无法和Excel无法比,我就是想知道有没有办法(小技巧也可以)能够大致的实现这个功能,
如果不能,那我只能是If判断了。加上改变Tabel1和Table2的结构,加各种标识来判断出来。然后用的你方法来更新Tabel2的数据。
iloveC#.net类无法和Excel无法比,我就是想知道有没有办法(小技巧也可以)能够大致的实现这个功能,
如果不能,那我只能是If判断了。加上改变Tabel1和Table2的结构,加各种标识来判断出来。然后用的你方法来更新Tabel2的数据。
#1
不懂,帮顶,接分。
#2
使用事件就好了
using System;
using System.Data;
public class test
{
DataTable dt1, dt2;
public test()
{
dt1 = new DataTable();
dt2 = new DataTable();
dt1.Columns.Add("ID");
dt1.Columns.Add("AA");
dt1.Columns.Add("BB");
dt2.Columns.Add("ID");
dt2.Columns.Add("AA");
dt2.Columns.Add("BB");
dt1.Rows.Add(new object[] { "1", "Row1_1", "Row1_2" });
dt1.Rows.Add(new object[] { "2", "Row2_1", "Row2_2" });
dt2.Rows.Add(new object[] { "1", "Row1_1", "Row1_2" });
dt2.Rows.Add(new object[] { "2", "Row2_1", "Row2_2" });
dt1.RowChanged += new DataRowChangeEventHandler(dt1_RowChanged);//绑定事件,
MessageBox.Show("dt2行1列AA的值:" + dt2.Rows[0]["AA"].ToString());
dt1.Rows[0]["AA"] = "ChangeValue";//更改值后会触发dt1_RowChanged,同时更新数据相同的行
}
void dt1_RowChanged(object sender, DataRowChangeEventArgs e)
{
DataRow dr1 = e.Row;
DataRow dr2 = null;
foreach (DataRow d in dt2.Rows)
{
if (d["ID"].ToString() == dr1["ID"].ToString())//通过ID找到同一行
{
dr2 = d;
break;
}
}
if (dr2 == null) return;//找不到行
//更新行
for (int i = 1; i<dt2.Columns.Count; i++)
dr2[i] = dr1[i];
MessageBox.Show("dt2行1列AA的值:" + dt2.Rows[0]["AA"].ToString());
}
public static void Main(string []Args)
{
test t=new test();
}
}
#3
可不可以在Table1改变的时候将变更的数据放入ViewState中,
然后进行判断来更新Table2
然后进行判断来更新Table2
#4
二楼的方法可以,但不够好,好的做法是数据模型提供值改变的事件,显示部分响应,这样无论有多少个控件以任何一种方式显示数据都会很容易的实现
#5
应该是可以的,本来excel和table是相通的.
#6
学习~
#7
我的情况要比“iloveC#”的情况复杂,
我可能是Table1里面2行的数据,引起Table2里面一行数据的变化,
并且他们ID的是不同的,
我说一下我的场景吧,
Table1里面记录了原始的货币对,比如
Symbol Mid
USDHKD 10
USDJPY 2
NZDCNY 0.5
而Table2里面那是这样的,
HKDJPY 5 //我来解释一下5是怎么来的,是USDHKD/USDJPY=10/2 而来
CNYNZD 2 //我来解释一下2是怎么来的,是1/NZDCNY=1/0.5而来。
每当Table里面的数据发生变化,我要导致Table里面相应的有关系的数据发生变化。
请大家继续。
谢谢“iloveC#”的代码,很有启发。
能否像Excel一样实现定义公式那
我可能是Table1里面2行的数据,引起Table2里面一行数据的变化,
并且他们ID的是不同的,
我说一下我的场景吧,
Table1里面记录了原始的货币对,比如
Symbol Mid
USDHKD 10
USDJPY 2
NZDCNY 0.5
而Table2里面那是这样的,
HKDJPY 5 //我来解释一下5是怎么来的,是USDHKD/USDJPY=10/2 而来
CNYNZD 2 //我来解释一下2是怎么来的,是1/NZDCNY=1/0.5而来。
每当Table里面的数据发生变化,我要导致Table里面相应的有关系的数据发生变化。
请大家继续。
谢谢“iloveC#”的代码,很有启发。
能否像Excel一样实现定义公式那
#8
谢谢大家的回复。
请 24K纯爷们,纯的!!!!!!说明一下详细的步骤。
请 成长说明一下如何可以像Excel一样,我能够设置DataCoulume公式,但是DataRow怎么设置那。
再次谢谢大家。请继续。
请 24K纯爷们,纯的!!!!!!说明一下详细的步骤。
请 成长说明一下如何可以像Excel一样,我能够设置DataCoulume公式,但是DataRow怎么设置那。
再次谢谢大家。请继续。
#9
在更新前加个计算过程,算出要更新的值,关系绑定不懂咋搞,暂时没学过.....
#10
订一下
#11
用触发器!
#12
我觉得公式绑定有点困难啊,你拿.net的一个类和一个应用软件比,这个.......
#13
.Net,C#之人生无悔DataTable有触发器吗?
iloveC#.net类无法和Excel无法比,我就是想知道有没有办法(小技巧也可以)能够大致的实现这个功能,
如果不能,那我只能是If判断了。加上改变Tabel1和Table2的结构,加各种标识来判断出来。然后用的你方法来更新Tabel2的数据。
iloveC#.net类无法和Excel无法比,我就是想知道有没有办法(小技巧也可以)能够大致的实现这个功能,
如果不能,那我只能是If判断了。加上改变Tabel1和Table2的结构,加各种标识来判断出来。然后用的你方法来更新Tabel2的数据。