我从一个表中获取数据到gridview.My gridview有3个文本框和一个下拉控件。我想从数据库中逐个获取数据。获取每一行后我想增加一个网格的行查看并再次获取它。
这是我的代码
SqlCommand sqlCommand2 = new SqlCommand("proc_bcdet", sqlConnection);
sqlCommand2.CommandType = CommandType.StoredProcedure;
sqlConnection.Open();
sqlCommand2.Parameters.Add("@btcode", SqlDbType.Int).Value = Session["btcode"];
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = sqlCommand2;
DataSet ds = new DataSet();
adp.Fill(ds);
DataTable dt = ds.Tables[0];
int rowIndex = 0;
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
TextBox box1 = (TextBox)gvCashReceipt.Rows[i].Cells[1].FindControl("txtlgroup");
TextBox box2 = (TextBox)gvCashReceipt.Rows[i].Cells[2].FindControl("txtamt");
TextBox box3 = (TextBox)gvCashReceipt.Rows[i].Cells[3].FindControl("txtnarr");
Label lb1 = (Label)gvCashReceipt.Rows[i].Cells[4].FindControl("lbllcode");
DropDownList ddl1 = (DropDownList)gvCashReceipt.Rows[rowIndex].Cells[0].FindControl("drprledger");
//Fill the DropDownList with Data
ddl1.DataSource = module.Query("Select Name from AccMast where LGcode in (2,3,4) order by Lcode");
ddl1.DataBind();
if (i < dt.Rows.Count)
{
//Assign the value from DataTable to the TextBox
box1.Text = dt.Rows[i]["Lgname"].ToString();
box2.Text = dt.Rows[i]["Amt"].ToString();
box3.Text = dt.Rows[i]["Narr"].ToString();
lb1.Text = dt.Rows[i]["Lcode"].ToString();
//Set the Previous Selected Items on Each DropDownList on Postbacks
ddl1.ClearSelection();
ddl1.Items.FindByText(dt.Rows[i]["Name"].ToString()).Selected = true;
}
rowIndex++;
}
}
获取第一行后我得到错误'索引超出范围'请帮帮我......
答案 0 :(得分:0)
当您可以直接将数据绑定到gridview时,我不确定为什么要使用for循环。 但是,如果您的要求是获取增量列,最好的方法是创建一个带有增量列的新数据表,然后将其与结果数据表合并。
此链接显示了如何执行此操作。 http://tinyurl.com/kv5v2zy
另外,请尝试使用非常通用的数据网格。
希望这有帮助。