楼主:
srxrrr (干!我是肌董)
2015-02-11 16:58:46我是透过将资料写入DataTable再贴上DataGridView方式来呈现表单
现在想要修改DataTable内的某row的资料
目前想到2个方法来实现此目的...
方法1(请见下面程式码):
以最基本的一列一列搜寻 在column搜寻到某值时 再修改此row后面的内容
但觉得这个方法好像很笨很不优 当资讯量大时不知会不会造成运算过久...
方法2(请见下面程式码):
想要透过DataTable.Select函数(感觉会比方法1来的快)
但目前卡在当已经以DataTable.Select函数找到某column内有要寻找的值时
却不知该如何获得该row的位置(RowIndex) 以致无法修改该row的内容
(还是根本不该透过DataTable.Select来选择)
以下为我目前的程式码:
DataTable dt = new DataTable(); //建立DataTable
private void Form1_Load(object sender, EventArgs e)
{
//设定有几行 与各行标题
dt.Columns.Add("No", Type.GetType("System.Decimal"));
dt.Columns.Add("Student");
dt.Columns.Add("Sex");
//直接设定各列内容
dt.Rows.Add("1", "LBJ", "male");
dt.Rows.Add("2", "Zoe", "female");
dt.Rows.Add("3", "Hughes", "male");
dataGridView1.DataSource = dt; //将内容贴入DGV显示出来
}
//方法1: 以传统方式判断RowIndex 再取代内值
private void buttonReplaceNormal_Click(object sender, EventArgs e)
{
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
//当column[0]搜寻到"1"这个字时 取代其后面内容
if (dt.Rows[i][0].ToString() == "1")
{
dt.Rows[i][1] = "Anna";
dt.Rows[i][2] = "Female";
}
}
dataGridView1.DataSource = dt;//将内容贴入DGV显示出来
}
//方法2: 以DataTable.Select函数判断RowIndex 再取代内值
private void button_ReplaceSelect_Click(object sender, EventArgs e)
{
//想要将1号换一个人
DataRow[] drs = dt.Select("No=1");
if (drs.Length > 0) //有取到资料才进到这边
{
int iRowIndex;
//***关键***
//不知该如何获得所搜寻到的row的Index...
//将搜寻到
dt.Rows[iRowIndex][1] = "Anna";
dt.Rows[iRowIndex][2] = "Female";
dataGridView1.DataSource = dt; //将内容贴入DGV显示出来
}
}
想请问几个问题:
1.用"方法1"会不会耗太多时间在搜寻上(当资料量大时)
2.使用DataTable.Select函数是否可以获得特定的RowIndex?
如果可以的话 用此方法会比"方法1"来的快吗?
3.还是以上两种方法都不优 有更好的处理方式?
希望各位热心的版友们能给予我一点建议!
谢谢!!
祝大家新年快乐!!