使用C#在代码隐藏中使用GridViewRow对象创建GridView行

时间:2013-02-07 06:48:40

标签: c# asp.net

我想在Code Behind中创建一个GridView控件。

从数据库表中提取数据。

我的代码是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class gv1 : System.Web.UI.Page
{
    SqlConnection cn;
   SqlCommand cmd;
   DataSet ds;
   SqlDataAdapter da;

   protected void Page_Load(object sender, EventArgs e)
  {
       cn = new SqlConnection("Data Source=AMIR-PC\\MOHEMMAD;Initial Catalog=CRM_InvestPlus;Integrated Security=True");

}
protected void Button1_Click(object sender, EventArgs e)
{
    cn.Open();
    cmd = new SqlCommand("Select * from Customer_Master", cn);
    da = new SqlDataAdapter(cmd);
    ds = new DataSet();
    da.Fill(ds);
    cn.Close();

    GridView gr1 = new GridView();

    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
    {
        GridViewRow row = new GridViewRow(i, i, DataControlRowType.DataRow,  DataControlRowState.Normal);
        TableCell cell1 = new TableCell();
        TableCell cell2 = new TableCell();
        cell1.Text = ds.Tables[0].Rows[i][0].ToString();
        cell2.Text = ds.Tables[0].Rows[i][0].ToString();
        row.Cells.Add(cell1);
        row.Cells.Add(cell2);
        gr1.Controls[0].Controls.AddAt(i, row);


      }
        this.Controls.Add(gr1);
   }
}

但是当我运行代码时出现如下错误:

用户在显示的代码行中未处理ArgumentOutOfRangeException

gr1.Controls [0] .Controls.AddAt(I,行);

请帮忙..
提前谢谢..

2 个答案:

答案 0 :(得分:1)

我认为这是因为您要添加到未在任何位置设置的Control[0]。像这样改变它,看它是否有帮助:

gr1.Controls.AddAt(i,row);

好的,它应该是这样的:

首先,在初始化网格视图时,必须添加Table

var gv = new GridView();
var t = new Table();
gv.Controls.Add(t);

然后你可以按照你的方式添加行

gv.Controls[0].AddAt(i, row);

请尝试这种方式:)

答案 1 :(得分:0)

为什么不尝试更简单的代码?

if(ds.tables.count > 0)
    {
    gr1.DataSource = ds;
    gr1.DataBind();

    }
else
{
  lable.Text = "No Record Found";
}