如何增加gridview的行?

时间:2014-02-15 20:31:26

标签: asp.net

我从一个表中获取数据到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++;
    }
}

获取第一行后我得到错误'索引超出范围'请帮帮我......

1 个答案:

答案 0 :(得分:0)

当您可以直接将数据绑定到gridview时,我不确定为什么要使用for循环。 但是,如果您的要求是获取增量列,最好的方法是创建一个带有增量列的新数据表,然后将其与结果数据表合并。

此链接显示了如何执行此操作。 http://tinyurl.com/kv5v2zy

另外,请尝试使用非常通用的数据网格。

希望这有帮助。