Я пытаюсь разрешить моим пользователям вводить большие списки данных с помощью элемента управления ASP.Net GridView.Влияние, которое я пытаюсь создать, состоит в том, чтобы заставить элемент управления GridView действовать как электронная таблица.Пользователь может свободно вводить данные и вкладки от столбца к столбцу и строки к строке.Пользователь может использовать кнопку внизу страницы, чтобы добавлять строки по мере необходимости.Внизу формы также есть кнопка для сохранения по мере необходимости.
Для этого я создал DataTable с кучей пустых строк и связал его с GridView.Столбцы GridView являются столбцами шаблонов, которые содержат текстовые поля.Итак, когда страница открывается, она на самом деле выглядит как электронная таблица.Когда пользователь нажимает кнопку «Добавить строки», я просто добавляю еще десять строк в таблицу данных, к которой привязан GridView, и она работает как чудо.
Проблема, с которой я сталкиваюсь, заключается в чтении данных, которые пользовательпоступил.Когда пользователь нажимает на пейджинговую ссылку или кнопку обновления, я хотел бы обновить DataTable данными, введенными пользователем. Вот что у меня есть.
Private Sub UpdateDataTable()
Dim objCatRow As clsCategoriesRow = Session("gvCategoriesRow")
Dim drQuery() As DataRow = Nothing
Dim drRow As DataRow = Nothing
Dim objRow As GridViewRow = Nothing
Dim intRecNo As Integer = 0
Dim txt As TextBox = Nothing
Dim lbl As Label = Nothing
'Loop through all of the rows in the grid view control
For Each objRow In Me.gvCategories.Rows
'Get the label that contains the identity column
lbl = objRow.Cells(GridColumns.Category).FindControl("lblItemRecNo")
intRecNo = lbl.Text
'Update the datarow bound to this grid view row
'First, query the datarow from the data table
drQuery = objCatRow.Table.Select("recno = " & intRecNo)
'Make sure our query returned a row
If Not IsNothing(drQuery) AndAlso drQuery.Count > 0 Then
'Get the value from the textbox in the grid view
txt = objRow.Cells(GridColumns.Category).FindControl("txtItemCategory")
'Upadte the data row with the value the user entered
'THE VALUE IN txt.Text IS EMPTY. HOW CAN I GET THE VALUE THE USER TYPED IN?
drQuery(0)("Category") = txt.Text
'Get the value from the textbox in the grid view
txt = objRow.Cells(GridColumns.SortORder).FindControl("txtItemSortOrder")
'Upadte the data row with the value the user entered
drQuery(0)("sortorder") = txt.Text
End If
Next
End Sub
Проблема в том, что это не возвращаетчто набрал пользователь. Строка
txt = objRow.Cells (GridColumns.Category) .FindControl ("txtItemCategory")
возвращает ссылку на текстовое поле в столбце шаблона.Но он содержит предыдущее значение, значение из состояния просмотра, а не значение, введенное пользователем.
Как получить значение, введенное пользователем в сетку?
Я хочуупомянуть, что я знаю, как добавить кнопки EDIT и UPDATE в каждую строку.Я бы хотел избежать этого, если смогу.У моих пользователей есть огромные списки данных для входа, и такой подход сделает приложение непригодным для использования.
Заранее спасибо,
Майк