日期:2014-05-18  浏览次数:21001 次

dataset.tables[0].row[].itemarray[0] 错误,帮忙解决!!
 

string pno= this.dgvPrj.CurrentRow.Cells[0].Value.ToString();
  DataSet myds = datacon.getds("select PrjNo,Description, Respon,"
  + "Dept, StartDate,EndDate, Stations,"
  + "EES1, EES21, EES22,EES34,EES5,"
  + "PrjMgmt, Total from ProjectOverview where PrjNo='"+pno+"'" , "ProjectOverview");

  prjNoTextBox.Text = Convert.ToString(myds.Tables["ProjectOverview"].Rows[0].ItemArray[0]);//这一行出现了there is no row at position 0, 
不知道是什么原因,请大家指点一下,数据集里是有表的

------解决方案--------------------
数据集里是有表的

--
但是表是空的
------解决方案--------------------
myds.Tables["ProjectOverview"].Rows[0][0]
------解决方案--------------------
C# code

string pno= this.dgvPrj.CurrentRow.Cells[0].Value.ToString(); 
messagebox.show(pno);//测试一下是否条件为空,导致查询的数据为空
DataSet myds = datacon.getds("select PrjNo,Description, Respon,"+ 
       "Dept, StartDate,EndDate, Stations,"+ 
       "EES1, EES21, EES22,EES34,EES5," +
       "PrjMgmt, Total  from ProjectOverview where PrjNo='"+pno+"'" , "ProjectOverview"); 

prjNoTextBox.Text = myds.Tables["ProjectOverview"].Rows[0].ItemArray[0].toString();

------解决方案--------------------
先判断myds.Tables["ProjectOverview"].Rows.Count是不是为0;
------解决方案--------------------
prjNoTextBox.Text = Convert.ToString(myds.Tables["ProjectOverview"].Rows[0].ItemArray[0]);
这一局错误了
ItemArray是一个属性,返回的是一个数组,应该赋值给一个数组,而且他也没有提供下标的访问
所以你的使用是错误的,下列方法可以帮助你
ds.Tables[0].Rows[0]["姓名"];返回第一行的列名是“姓名”的字段值
ds.Tables[0].Rows[0][0]返回第一行第一列的值
------解决方案--------------------
DataSet myds = datacon.getds("select ......

红色标记的是你自己写的填充方法吗?

C# code

string pno= this.dgvPrj.CurrentRow.Cells[0].Value.ToString(); 
messagebox.show(pno);
DataTable mydt = new DataTable();
SqlDataApdater da=new SqlDataApdater("select PrjNo,Description, Respon,"+ 
       "Dept, StartDate,EndDate, Stations,"+ 
       "EES1, EES21, EES22,EES34,EES5," +
       "PrjMgmt, Total  from ProjectOverview where PrjNo='"+pno+"'" ,conn);
da.fill(mydt);
if(dt.rows.count>0)
{
  prjNoTextBox.Text = mydt.Rows[0].ItemArray[0].toString(); 
}

------解决方案--------------------
int i=myds.Tables["ProjectOverview"].Rows.count;
看是否有数据条数

------解决方案--------------------
看看你的数据库是不是没有数据啊,我想一定是没有数据,要不不可能出现这个问题的,去看看人的数据库吧。
------解决方案--------------------
探讨
看看你的数据库是不是没有数据啊,我想一定是没有数据,要不不可能出现这个问题的,去看看人的数据库吧。

------解决方案--------------------
沒有查詢到記錄
------解决方案--------------------
C# code

string pno= this.dgvPrj.CurrentRow.Cells[0].Value.ToString(); 
//messagebox.show(pno);
DataTable mydt = new DataTable();
SqlDataApdater da=new SqlDataApdater("select PrjNo,Description, Respon,"+ 
       "Dept, StartDate,EndDate, Stations,"+ 
       "EES1, EES21, EES22,EES34,EES5," +
       "PrjMgmt, Total  from ProjectOverview where PrjNo='"+pno+"'" ,conn);
da.fill(mydt);
if(dt.rows.count>0)
{
  prjNoTextBox.Text = mydt.Rows[0].ItemArray[0].toString(); 
} 

//那你用这个试试,是否为空,如果mydt不为空,则是你返回的table为空