我有一个由XML格式的数据组成的字符串。它由不同的标签组成,如VENUE标签中有50个数据& ARTIST标签,包含20个数据。我的问题是当我将数据绑定在数据集&在数据行中添加该数据我收到错误第21位没有行这是我的代码
for (int i = 0; i < ds.Tables[1].Rows.Count; i++)
{
DataRow dr = dt.NewRow();
dr["Venue"] = ds.Tables[1].Rows[i][1].ToString();
dr["Address"] = ds.Tables[1].Rows[i][2].ToString();
dr["City"] = ds.Tables[1].Rows[i][4].ToString();
dr["State"] = ds.Tables[1].Rows[i][5].ToString();
dr["ZipCode"] = ds.Tables[1].Rows[i][6].ToString();
dr["Performer"] = ds.Tables[2].Rows[i][0].ToString();
}
VENUE&amp ;; 1 2对于艺术家。我如何处理这个错误,因为我想要VENUE&amp;数据表中的ARTIST数据。帮助我...
修改
我这样做了
if(ds.Tables[2].Rows.Count>0)
{
dr["Performer"] = ds.Tables[2].Rows[i][0].ToString();
}
else
{
dr["Performer"]="";
}
但这不起作用我给了我同样的错误
编辑这个
怎么样? if (ds.Tables[2].Rows.Count > i)
{
dr["Performer"] = ds.Tables[2].Rows[i][0].ToString();
}
else
{
dr["Performer"] = "no performer";
}
答案 0 :(得分:0)
目前您假设 Tables[2]
的行数与Tables[1]
一样多,原因是这两段代码:
for (int i = 0; i < ds.Tables[1].Rows.Count; i++)
{
...
dr["Performer"] = ds.Tables[2].Rows[i][0].ToString();
}
目前尚不清楚您实际上要对表演者信息做些什么,但听起来您可能想要执行连接查询,并且只对连接的行进行操作。
答案 1 :(得分:0)
for (int i = 0; i < ds.Tables[1].Rows.Count; i++)
{
DataRow dr = dt.NewRow();
dr["Venue"] = ds.Tables[1].Rows[i][1].ToString();
dr["Address"] = ds.Tables[1].Rows[i][2].ToString();
dr["City"] = ds.Tables[1].Rows[i][4].ToString();
dr["State"] = ds.Tables[1].Rows[i][5].ToString();
dr["ZipCode"] = ds.Tables[1].Rows[i][6].ToString();
if(i<21){
dr["Performer"] = ds.Tables[2].Rows[i][0].ToString();
}
}
尝试这样的事情,而不是21把标签的数量