积极答复者
问题:[1#泵故障] 既不是表 baojing 的 DataColumn 也不是 DataRelation

问题
-
我的ASPX.CS页是这样写的
seach=(string)dr["e_baojing"]; 这句话是把别的表里字段读出来,当做sqlstr查询语句条件; 现在取出来的数是:[1#泵故障],[2#泵故障],门磁,高区用户压力
conn.Close();
zdm = seach.Split(','); //这句是seach里的数分离,分别存到ZDM里
string sqlstr = "Select 日期," + seach + " from z_" + tableName1 + "where 日期 between '" + startime + "' and '" + endtime + "'order by 日期 desc";
conn.Open();
SqlDataAdapter myda5 = new SqlDataAdapter(sqlstr, conn);
DataSet myds5 = new DataSet();
myda5.Fill(myds5, "baojing"); //建立一个以baojing为表明的临时表
GridView1.DataSource = myds5;
GridView1.DataBind();
conn.Close();
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
int j = 0;
DataRowView mydrv = myds5.Tables["baojing"].DefaultView[i];
while (j < zdm.Length)
{string score = Convert.ToString(mydrv[zdm[j]]); //错误提示就是这句报错,这句我是想把数组里的数分别取出来,然后进行后续操作。
~~~~~~~~ 现在的问题是,我把seach里的[1#泵故障],[2#泵故障]这两个字段去掉,就能正常显示,可是一加
上去就不行了!
}
我用的数据库SQL2005 表里的字段里有[1#泵故障],[2#泵故障]- 已移动 Sheng Jiang 蒋晟Moderator 2009年9月18日 16:05 数据库开发 (发件人:ASP.NET 与 AJAX)
答案
-
你好,这个问题其实我一开始就表述得很清楚了。它不是由于 split 的问题,根本原因是你存在数组中的字段名是带方括号的,而通过 SQL 查询出来的数据字段是不带方括号的,所以自动创建的 DataTable 的字段名是不带方括号的。字段名前后不一不致当然会报错咯。
知识改变命运,奋斗成就人生!- 已标记为答案 Allen Chen - MSFTModerator 2009年9月24日 6:44
-
XXY哥
我弄好了!
按这个思路
for (int i = 0; i < zdm.Length; i++) //这个循环是去掉取出字段的[]
{
zdm[i] = zdm[i].Replace("[", "");
zdm[i] = zdm[i].Replace("]", "");
}
我写了这样一段话,把 里面的【】去掉了!
然后在转过去!- 已标记为答案 Allen Chen - MSFTModerator 2009年9月24日 6:44
全部回复
-
// zdm = seach.Split(',');// 改为zdm = new string[] { "1#泵故障", "2#泵故障", "门磁", "高区用户压力" };另外,通过下面的方式获取也是可行的foreach (DataRow row in ds.Tables[0].Rows){foreach (DataColumn col in ds.Tables[0].Columns){string s = row[col.ColumnName].ToString();}}我上午测试了下,的确是我说的原因,我怀疑是你的代码有问题,你先把上面的代码更改一下看看能否执行通过
知识改变命运,奋斗成就人生! -
你好,这个问题其实我一开始就表述得很清楚了。它不是由于 split 的问题,根本原因是你存在数组中的字段名是带方括号的,而通过 SQL 查询出来的数据字段是不带方括号的,所以自动创建的 DataTable 的字段名是不带方括号的。字段名前后不一不致当然会报错咯。
知识改变命运,奋斗成就人生!- 已标记为答案 Allen Chen - MSFTModerator 2009年9月24日 6:44
-
XXY哥
我弄好了!
按这个思路
for (int i = 0; i < zdm.Length; i++) //这个循环是去掉取出字段的[]
{
zdm[i] = zdm[i].Replace("[", "");
zdm[i] = zdm[i].Replace("]", "");
}
我写了这样一段话,把 里面的【】去掉了!
然后在转过去!- 已标记为答案 Allen Chen - MSFTModerator 2009年9月24日 6:44