我正在开发Windows窗体应用程序,因此我从sql server中的表中获取数据并将数据存储在数据表中。
之后,我在代码中检查了这种情况:
if(dt.Rows.count>0)
然后,
进入循环并为文本框分配值。一切都很好。
前任:
int count=0; //Globally
在我的Next_Record函数中:
if(dt.Rows.Count>0)
{
txtWardId.Text = dt.Rows[count]["id"].ToString();
count+=1;
}
然后我全局定义了一个计数变量,然后每次单击(下一个记录按钮)都会递增该变量,这样就可以得到另一个记录。但是dt.Rows.count给出了双精度值。(意味着如果行数是7,则单击下一步,行数是14,然后单击第三次单击...,就像这样)
这是我的联系:
SqlDataReader _reader;
cmd = new SqlCommand();
cmd.Connection = openConnection();
cmd.CommandText = Text; //Assign the SP Name to Command Object
cmd.CommandType = CmdType; //Assign the SP Type to Command Object
_reader = cmd.ExecuteReader(); //Execute the SP
dt.Load(_reader);
_reader.Close();
return dt;
您能解决什么问题?
谢谢。
单击-按钮时,总是将行添加到表中Next_Record
。DataTable.Load
将新行与现有行合并。
您有两种选择:
Next_Record
单击时加载表,还不清楚为什么需要它。Clear
桌子先
dt.Clear(); // or dt = new DataTable();
using(var _reader = cmd.ExecuteReader())
dt.Load(_reader);
需要注意的一件事是,DataTable.Load
将新行与现有行合并。但是如何取决于LoadOption
传递给的值Load
(默认值为PreserveChanges
)。但是,只有在定义了主键时,它才能合并行。否则,这些行将永远不会合并并添加到现有表中。
另请注意,您的if
条件不完整:
if(dt.Rows.Count > 0)
{
txtWardId.Text = dt.Rows[count]["id"].ToString();
count += 1;
}
如果count
大于或等于则失败dt.Rows.Count
。我将再次从记录开始:
if(dt.Rows.Count > 0)
{
if(count >= dt.Rows.Count)
count = 0;
txtWardId.Text = dt.Rows[count]["id"].ToString();
count++;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句