【发布时间】:2017-08-29 16:46:58
【问题描述】:
我有一个来自存储过程的数据表。我想添加一个名为“Assessment”的列,该列将从 sql 查询中填充。最后我想用这个数据表填充一个商店。在 Visual Studio 中,我看到包含“SiteId”的数据表列名为 7。但我收到此错误:
加载失败:列“7”不属于表。
和代码:
DAL.DBDataContext dc = new DAL.DBDataContext();
try
{
SqlConnection sqlConnection1 = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand();
SqlDataReader sqlreader;
cmd.CommandText = "StorProc";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@CTid", ctid));
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
sqlreader = cmd.ExecuteReader();
var dt = new DataTable();
dt.Load(sqlreader);
//Add assessment column
dt.Columns.Add("Assessment", typeof(System.String));
var data = new List<object>();
foreach (DataRow r in dt.Rows)
{
if (r[7] != null)
{
var res = (from d in dc.Doctors
join ct in dc.CTUsers on d.id equals ct.DoctorId
where ct.CTid == ctid && ct.SiteId == Int32.Parse(r["7"].ToString())
select d).FirstOrDefault();
r["Assessment"] = res.Assessment;
}
data.Add(r);
}
this.storeSites.DataSource = dt;
this.storeSites.DataBind();
sqlConnection1.Close();
}
catch (Exception a)
{
X.Msg.Alert("Warning", "Load failed:" + a.Message).Show();
}
【问题讨论】:
-
r[6] 或 r[8] 有效吗?列名是
7似乎很奇怪。 -
如果我在 sql server 中运行存储过程,则会出现“id”等列名。但是如果我在 Visual Studio 中打开 ItemArray of r,我只会看到数字。检查上传的照片
-
基本上,
Int32.Parse(r["7"].ToString()是你的问题,我相信。