2010-08-17 5 views
3

Я пишу веб-приложение, которое используется для отслеживания и ввода некоторых пользовательских данных ... Каждый день мне нужно вводить некоторые данные для нескольких пользователей вручную ...Начальный режим редактирования GridView?

Я выберу дату с календарем, и для этой даты я получаю значения DB, назначенные для всех пользователей в выбранную дату ... Если в базе данных для этой даты есть некоторые записи, я покажу ее в gridview ...

Вот вид gridview для выбранного дата ...

 
USERS DATA 
------------ 
User1 Data1 
User2 Data2 
User3 Data3 

Но, если я выбираю дату, для которой нет записей в БД, я хотел бы отобразить gridview, содержащее имена пользователей в каждой строке, но я хочу, чтобы второй столбец (поле DATA) был первоначально доступен для редактирования для ВСЕХ строк (весь второй столбец должен содержать текстовые поля для вставки значений, а не только выбранную строку, как в стандартном редактируемом GridView режим) позволяет вставки разыскиваемых значений ...

Я хочу, чтобы выглядеть, как этот

 
USERS DATA 
---------------- 
User1 TextBox 
User2 TextBox 
User3 TextBox 

Моя идея, чтобы получить список пользователей из БД и создать DataTable с первого столбца с указанной возвращаемые имена пользователей , и второй столбец пуст ... Этот datatable будет источником данных для gridview, в котором я собираюсь отключить режим редактирования, и в обычном (показе) режиме у меня будет TemplateField containg textbo xes привязаны к тому, что datatable во втором столбце, и метки, отображающие имена пользователей в первом столбце ... При вводе всех значений будет кнопка SAVE, которая вызывает метод, который будет считывать введенные значения из datatable и сохранять его в базе данных ...

Есть ли лучший способ реализовать эту функциональность? Если текстовые поля Templatefield привязаны к datatable (как gridview datasource), то введенные значения текстовых полей будут доступны из объекта данных, но нажатие кнопки «Сохранить» вызывает обратную передачу, и я не знаю, как сохранить состояние datatable? Есть ли лучший способ получить требуемое gridview с целым вторым столбцом availibe для вставки новых значений?

Заранее благодарю вас за помощь & раз!

ответ

0

Я бы получил полный набор данных, используя левое соединение в базе данных, и если для пользователя нет записи, этот пользователь будет возвращен с пустым значением. Что-то вроде этого:

выберите users.user, IsNull (entries.entry, '') от пользователей оставили присоединиться к записи на users.userid = entries.userid

Я думаю, что вы можете переопределить OnDataBinding (или OnDataBound), чтобы проверить, свободен ли второй столбец, и поместите поле в режим редактирования, если оно есть. Таким образом, если у некоторых пользователей есть записи, а некоторые нет, только пользователи без записи будут в режиме редактирования. Любой пользователь с записью будет находиться в режиме отображения. Для этого есть образец для http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.onrowdatabound.aspx.

+0

Спасибо за вас быстрый ответ, еще мне интересно, как поставить ряд быть изначально в режиме редактирования, и как поместить несколько строк, чтобы быть первоначально в режиме редактирования и после этого источника данных обновлений с несколькими записями на одной кнопке сохранения/применения нажмите? – Zzz

Смежные вопросы