gridview.columns как его получить? - PullRequest
1 голос
/ 21 июня 2010

Простая вещь - получить список столбцов, представленных в сетчатом представлении, все, но выдает ошибки.

Попытка получить количество столбцов также не работает!там написано ноль?

Вот код:

        try
        {

            commandString = "Select * from Table_1";

            conn = new SqlConnection(Class1.connection);

            command = new SqlCommand(commandString, conn);

            conn.Open();

            reader = command.ExecuteReader();



            GridView1.DataSource = reader;

            GridView1.DataBind();

           //also not wrking??
            Label1.Text = GridView1.Columns.Count.ToString;


            reader.Close();
            reader.Dispose();

            conn.Close();
            conn.Dispose();

Что не так?Есть ли альтернативный способ задать вид сетки для его столбцов?автогенерация столбцов это правда.

Ответы [ 2 ]

1 голос
/ 21 июня 2010

Привязка к читателю не очень хорошая идея; свяжите его с таблицей данных и посмотрите, насколько хорошо это работает для вас.

Я не уверен, как пейджинг будет работать в виде сетки, если он привязан к читателю, но в качестве наилучшей практики ваш уровень представления не должен ничего знать о вашей базе данных. Связывая ваш gridview с читателем, вы получаете высокую связь между слоями. Обычно вы хотите вернуть DataTable или, еще лучше, Data Transfer Object (DTO) из сервисного уровня или бизнес-уровня. Я думаю, если это маленькое приложение, в котором вас не волнует масштабируемость, тогда привязка к считывателю в порядке, но лично я все равно привязал бы его к DataTable.

Это может помочь .

0 голосов
/ 21 июня 2010

Вот как я этого добился. Если возможно лучшее кодирование, пожалуйста, прокомментируйте.

int cells_count;
        ArrayList Header_list = new ArrayList();

//wrking..

            cells_count = GridView1.HeaderRow.Cells.Count;

            for (int i = 0; i < cells_count; i++)
            {
                Header_list.Add( GridView1.HeaderRow.Cells[i].Text );
            }
           // Label1.Text = GridView1.HeaderRow.Cells[1].Text;

            //the first colunm name
            Label1.Text = Header_list[0].ToString();
...