0

我想在后面的代码中创建一个 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,row);

请帮忙..
提前谢谢..

4

2 回答 2

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);

请尝试这种方式:)

于 2013-02-07T07:10:04.247 回答
0

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

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

    }
else
{
  lable.Text = "No Record Found";
}
于 2013-02-07T07:04:08.817 回答