Входные данные пусты при возврате, несмотря на наличие значений
Вопрос
Я использую telerik RadGrid с формой редактирования UserControl.Когда срабатывает событие InsertCommand, я получаю пользовательский элемент управления и нахожу в нем элементы управления редактированием, но все текстовые свойства являются строковыми.Пусто.Я подозреваю, что это как-то связано с ViewState, но я не знаю, с чего начать поиск.
protected void jobGrid_InsertCommand(object source, GridCommandEventArgs e)
{
var editControl = e.Item.FindControl(GridEditFormItem.EditFormUserControlID) as JobEditControl;
SqlJobProvider.InsertJob(GetFieldValues(editControl));
}
private Dictionary<string, object> GetFieldValues(UserControl editControl)
{
string tb = (editControl.FindControl("aspText") as TextBox).Text;
Решение
Я считаю, что ваши элементы управления пусты, потому что вы привязываете сетку перед вставленным событием. Чтобы избежать такого поведения, я предлагаю вам заполнить RadGrid, используя событие NeedDataSource. Он запускается всякий раз, когда сетка нуждается в повторной привязке.
Другие советы
Сначала проверьте страницу Page_Load и убедитесь, что вы не сбрасываете все данные там при каждом попадании на страницу. Если у вас нет! IsPostBack, вы, вероятно, есть. Это самая распространенная причина не получать значения при публикации.
Использование:Частный подраздел RadGrid1_InsertCommand(обычно использует источник как объект, обычно использует его как Telerik.Web.UI.GridCommandEventArgs) Обрабатывает RadGrid1.InsertCommand Затемнить вставленный элемент как GridEditableItem = e.Item.OwnerTableView.GetInsertItem()
Dim _userControl As UserControl = CType(insertedItem.FindControl(GridEditFormItem.EditFormUserControlID), UserControl)
... http://www.telerik.com/help/aspnet/grid/grdinsertingvaluesusercontrolformtemplate.html