Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GridView и добавление записей 
V
    Опции темы
Bogdan1024
  Дата 26.5.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 1
Всего: 13



В контроле GridView реально как-то реализовать кнопку типо "Добавить новую запись"? А то смотрю, клацаю, Edit и Delete ясно как, а как Add сделать не ясно совсем. Или другое использовать нужно что-то?


--------------------
user posted image
PM MAIL   Вверх
dazy
Дата 27.5.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 4
Всего: 8



В футер или хедер добавь кнопку "Добавить",  
При клике добавляется новая запись, со значениями по умолчанию, и табличка переводится в режим редактирования этой записи.
PM MAIL   Вверх
Bogdan1024
  Дата 27.5.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 1
Всего: 13



Как их туда добавить, что это за свойство такое? И разве хэдер - это не ряд с названиями колонок?


--------------------
user posted image
PM MAIL   Вверх
tol05
Дата 27.5.2007, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



dazy, а действительно, что ты имеешь в виду? 
"В футер или хедер", "Засунуть надпись в хедер gridView"
Ты не мог бы свои ответы сделать более информативными? Если сильно ломает, так может вообще не нужно отвечать на вопрос? У человека проблема, ему нужно помочь и помочь максимально действенно. У человека сегодня может быть проблема дома, на работе, у него просто болит голова или зуб, сегодня он плохо пишет код...
Но, конечно, это только мое мнение...

Bogdan1024, попробуй так:
Для грида, связанного с заполненным данными источником данных:
Код

<PagerTemplate>
  <asp:Label ID="lab1" runat="server"/>
  <asp:Button CommandName="AddNew" ID="btn1" runat="server" Text="AddNew"/>
</PagerTemplate>

Но если таблица будет связана с пустым источником данных (нет еще данных, ты их вводишь через этот грид), тогда Pager не отображается. Надо будет использовать шаблон:
Код

<EmptyDataTemplate>
  <asp:Label ID="lab1" runat="server"/>
  <asp:Button CommandName="AddNew" ID="btn1" runat="server" Text="AddNew"/>
</EmptyDataTemplate>


P.S. обработчик кнопки
Код

void Gridview1_RowCommand(...)
{
  if(e.CommandName == "AddNew")//Это команда на добавление была?
  {...}//как-нибудь доьавляем новую запись в источник и обновляем грид
}


Это сообщение отредактировал(а) tol05 - 27.5.2007, 15:54


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Bogdan1024
Дата 28.5.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 1
Всего: 13



Добавил PagerTemplate, нигде никакой кнопки не появилось, а если редактировать этот теплейт, то она видна. Зато если добавить EmptyDataTemplate и удалить все записи, то она появляется.
Я так понял что у GridView нету механизма добавления записи? Тоесть, нужно сначала запросом добавить запись в базу, потом обновить GridView и сделать новую запись редактируемой? И как же мне узнать айдишник новой записи после её добавления?


--------------------
user posted image
PM MAIL   Вверх
tol05
Дата 28.5.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 34
Всего: 170



Pager будет изображаться, если ты разрешил paging и есть несколько страниц грида с данными.
EmptyDataTemplate используется, если в гриде данных нет. Грид - умный, надо думать как его ...
Грид имеет массу шаблонов, нужно самому решать, куда воткнуть эту возможность (я имею в виду - добавление строк). Прошу не воспринимать мой пример настолько буквально, проявить творчество...
Я ведь не знаю, сколько у тебя строк, что это и когда появляется.
Я просто отвечал на вопрос
Цитата(Bogdan1024 @  26.5.2007,  21:12 Найти цитируемый пост)
В контроле GridView реально как-то реализовать кнопку типо "Добавить новую запись"? А то смотрю, клацаю

smile

главное, что идея ясна, подстрой теперь ее под свой конкретный код. 

Грид действительно не реализует возможность добавления строк в ASP.NET 2.0 ибо творцы-кормильцы порешали, что добавление записей желательно (и правильно, с их т.з.) делать через DetailView или FormView.

ID для своих строк грид назначает сам, поскольку поддерживает INamingContainer и является контейнером наименования для своих строк и вложенных в шаблоны контролов. После того, как ты добавил строку в грид, ИМХО ее можно искать через 
Код

grid1.SelectedRow
grid1.SelectedIndex

и т.д. А также есть большое кол-во разнообразных событий, которые тоже можно посмотреть на тему их юзания. 
Например, событие RowCreated - чем плохо? Для каждой создаваемой строки анализируешь любое поле (cell-значение) и если это то, что ты создал, берешь ссылку на эту строку и юзаешь.

Это сообщение отредактировал(а) tol05 - 28.5.2007, 12:40


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Bogdan1024
Дата 28.5.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 1
Всего: 13



Цитата
Грид имеет массу шаблонов

Разве не два? А как их посмотреть?
Цитата
Грид действительно не реализует возможность добавления строк в ASP.NET 2.0 ибо творцы-кормильцы порешали, что добавление записей желательно (и правильно, с их т.з.) делать через DetailView или FormView.

Вот как? Ну я впринципе и делал через DetailView, просто хотелось чтобы было как в во многих просмотрщиках данных таблиц бд: нажал на нижний пустой ряд, а он сразу стал редактируем smile Очень удобно. Хотя через DetailView удобней, но не так красиво smile


--------------------
user posted image
PM MAIL   Вверх
dazy
Дата 3.6.2007, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 4
Всего: 8



Цитата(tol05 @  27.5.2007,  18:54 Найти цитируемый пост)
dazy, а действительно, что ты имеешь в виду? 

Да, пардон, надо было подробнее написать. 


Если сделать TemplatedField, то для него будут доступны следующие шаблоны:
ItemTemplate
AlternatingItemTemplate
EditItemTemplate
HeaderItemTemplte
FooterTemplate
Это для кажного поля. Для таблицы в целом еще доступны для редактирования EmptyDataTemplate и PagerTemplate.

Повторюсь, редатирование шалонов, доступно только для TemplatedField. Вообще, я склоняюсь к мысли, что проще и удобнее все поля выводимиые в таблицу представлять как TemplatedField. Поначалу вроде проще использовать стандартные стредства, но потом, быстро приходишь к тому, что стандрартных стредств не хватает. А в шаблоны очень гибкий инструмент.

Однако не все шаблоны показываются по умолчанию, например тот же footer, чтобы он отображался надо включить опцию ShowFooter = True.

Цитата(Bogdan1024 @  27.5.2007,  14:51 Найти цитируемый пост)
И разве хэдер - это не ряд с названиями колонок? 



Совершенно верно, но если вы используете TemplatedField, то вы можете самостоятельно настраивать внешний вид этого хедера, например, к названию столбца добавить кнопочку добавления, типа такую [+]. Или картинку какю вставить. 

Код

                <HeaderTemplate>
                    <asp:Label ID="Label1" runat="server" Text="ColumnLabel"></asp:Label>
                    <asp:LinkButton ID="LinkButton1" runat="server">[+]</asp:LinkButton>
                </HeaderTemplate>


В футер луще вставлять кнопку, но это кому как нравиться. Тут еще вот в чем дело, футер или хедер, они по ширине ограничены шириной поля. И тут зависит от вида таблицы, стоит ли применять данный способ. Ну например, в таблице одно основное текстовое поле, и пара-тройка мелких дополнительных полей. Конечно, тогда можно добавлять кнопку к футеру/хедеру основного поля, потому как таблица, как бы с этим полем ассоциирована. А бывает, нет такого основного поля, или его сложно выделить. Тогда кнопку лучше добавлять в PagerTemplate, но придется и пейджер самому реализовать. Надо, так же, не забыть включить отображение пейджера.

Конечно, более универсальный способ вставки записи это поставить Panel (или div), в него кнопку(ки) и в него же GridView.  Этот способ гораздо лучше, потому что он более универсальный. Кроме того не надо писать EmptyDataTemplate, ведь добавление записи должно быть возможно, даже когда нет ни одно записи. 

Цитата(Bogdan1024 @  28.5.2007,  12:23 Найти цитируемый пост)
И как же мне узнать айдишник новой записи после её добавления? 


Нужно знать способ, которым вы добавляете запись в таблицу. Что это за таблица, как получаете доступ и прочее. Но в общем случае, хранимая процедура, при добавлении записи может возвращать параметры, соотвественно может возвращать и вновь присвоеный ИД.

Еще, можно, тупо генерить ИД самому, и передавать в БД при вставке. Но лучще так не делать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.