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

わかりました、これはそれが好きな方法です:

まず、グリッド ビューを初期化するときに、追加する必要があります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 に答える