我想在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,行);
请帮忙..
提前谢谢..
答案 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";
}