我正在使用C#winform应用程序。我的目标是在用户从datetimePicker中选择一个日期之后,执行查询并返回仅具有相同记录的结果。接下来,用户将选择其中一个记录,这些记录应该从组合框中填充与该客户关联的所有项目(custlocation)。这部分正在运行。问题是,现在我一直试图让我的dataGridView1填充。我一直在说:
类型' System.ArgumentOutOfRangeException'的未处理异常发生在mscorlib.dll
其他信息:指数超出范围。必须是非负数且小于集合的大小。
我已检查过我的查询,并返回正确的结果。
private void custlocation_SelectedIndexChanged(object sender, EventArgs e)
{
SqlDataAdapter da = new SqlDataAdapter(
"Select [orderitem].*, [orderitem].qty, [orderitem].descrip, [orderitem].tally "+
"from [orderitem] inner join [Order] on [orderitem].orderId = [order].ct "+
"where [order].loadDate='" + dateTimePicker1.Value.Date + "' "+
"and [order].addr1=" + custlocation.Text, conn);
DataTable lt = new DataTable();
//da.Fill(lt);
//dataGridView1.DataSource = lt;
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = lt;
dataGridView1.Columns[4].Name = "loadtickets";
dataGridView1.Rows[a].Cells[0].Value = rdr["orderID"].ToString();
dataGridView1.Rows[a].Cells[1].Value = rdr["qty"].ToString();
dataGridView1.Rows[a].Cells[2].Value = rdr["descrip"].ToString();
dataGridView1.Rows[a].Cells[3].Value = rdr["tally"].ToString();
}
答案 0 :(得分:0)
数组是基于零的,就像您在@category.articles.where(published: true)
属性上使用的那样。似乎您正在尝试更改第5列的名称,但您只有4。
更改
Cells
要
dataGridView1.Columns[4].Name = "loadtickets";
答案 1 :(得分:0)
mscorlib.dll中发生了'System.ArgumentOutOfRangeException'类型的未处理异常
其他信息:指数超出范围。必须是非负数且小于集合的大小。
此错误是因为您必须使用dataGridView1.Columns[3].Name = "loadtickets";
之类的 SqlDataAdapter da = new SqlDataAdapter(
"Select [orderitem].*, [orderitem].qty, [orderitem].descrip, [orderitem].tally "+
"from [orderitem] inner join [Order] on [orderitem].orderId = [order].ct "+
"where [order].loadDate='" + dateTimePicker1.Value.Date + "' "+
"and [order].addr1=" + custlocation.Text, conn);
。
无法绑定多部分标识符“System.Data.DataRowView”
此错误是由于查询造成的。
orderitm.*
您已选择orderitem
([orderitem].qty, [orderitem].descrip, [orderitem].tally
中的所有列)和同一表中的3列([orderitem].qty AS Quantity
)。所以这些列是重复的
您必须删除这些重复项或为其提供类似public static void main(String[] args) {
myMap = new HashMap<>();
// 123,totti 100,roma, 100,totti
addToMap("totti", 123);
addToMap("roma", 100);
addToMap("totti", 100);
System.out.println(myMap);
}
private static void addToMap(String string, int i) {
int t = i;
if (myMap.get(string) != null) {
t += myMap.get(string);
}
myMap.put(string, t);
}