Создание строк GridView с использованием объекта GridViewRow в Code Behind Using C #

Я хочу создать элемент управления 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 (я, строка);

Пожалуйста, помогите ..
Заранее спасибо..

0
nl ja de
да, я пробовал это, но реальная вещь заключается в том, что я не знаю фактической работы gr1.Controls [0] .Controls.AddAt (i, row); @asma
добавлено автор Mohemmad K, источник
Хорошо, попробуйте мой ответ, который я только что разместил ниже.
добавлено автор asma, источник
вы пробовали отлаживать код и проверять значения переменных на каждой итерации?
добавлено автор asma, источник

2 ответы

Я думаю, это происходит потому, что вы добавляете в Control [0] , который нигде не установлен. Измените это так и посмотрите, помогает ли это:

gr1.Controls.AddAt (i, row);

Хорошо, вот как это должно выглядеть:

First when you are initializing your grid view you have to add to it Table

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

Затем вы можете добавить строку так, как вы делали

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

Пожалуйста, попробуйте этот путь :)

1
добавлено
Ох это нормально .. И спасибо за помощь .. :-)
добавлено автор Mohemmad K, источник
Не могли бы вы помочь мне создать ячейку шаблона. Я хочу сказать, что я хочу добавить FileUploadControl в созданный GridView @gzaxx
добавлено автор Mohemmad K, источник
Большое спасибо...
добавлено автор Mohemmad K, источник
Пробовал указанную выше строку и получил ошибку ... Не удалось наложить объект типа «System.Web.UI.WebControls.GridViewRow» на тип «System.Web.UI.WebControls.Table». »@Gzaxx
добавлено автор Mohemmad K, источник
да абсолютно сэр .. <form id = "form1" runat = "server"> @gzaxx
добавлено автор Mohemmad K, источник
он генерирует новую ошибку, отображающую это сообщение: «Control 'ctl02' типа« GridView »должен быть помещен внутри тега формы с помощью runat = server». @gzaxx
добавлено автор Mohemmad K, источник
Ваш код из HTML выглядит так: <form runat = "server"> ?
добавлено автор gzaxx, источник
Измените эту строку this.Controls.Add (gr1); на это (в коде позади): form1.Controls.Add (gr1);
добавлено автор gzaxx, источник
См. Мое редактирование :)
добавлено автор gzaxx, источник
Ну для более сложного GridView s я бы не делал их из кода, но использовал конструктор. Просто создайте свой собственный источник данных, который бы правильно заполнил его. В противном случае я не могу помочь вам больше, потому что я никогда не делал то, что вы просите :(.
добавлено автор gzaxx, источник

Почему бы вам не попробовать более простой код?

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

    }
else
{
  lable.Text = "No Record Found";
}
0
добавлено
Я не могу понять, что вы предложили. Необходимость ... Рассмотрим случай, когда таблица Customer_Master содержит поле «Емкость». Если у Клиента C0001 есть емкость 5, тогда я хочу 5 строк в gridview. @Asma
добавлено автор Mohemmad K, источник
Моя основная потребность в том, что я хочу решить размер gridview (количество строк) в коде за файлом .. @asma
добавлено автор Mohemmad K, источник
Я пробовал обе строки выше, но сгенерирована одна и та же ошибка .. @asma
добавлено автор Mohemmad K, источник
Итак, в конце концов, вам нужен счетчик строк?
добавлено автор asma, источник
Проверьте мой отредактированный ответ, пожалуйста, повторите его еще раз. Теперь это завершено. Вы можете попробовать
добавлено автор asma, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)