Чтение текста из текстового поля в Radgrid - PullRequest
0 голосов
/ 06 мая 2010

У меня есть Radgrid с 2 текстовыми полями и 2 DatePickers. Идея заключается в том, что у меня есть сетка с именем свойства, значением, действующим с и до. Я сам заполняю первое текстовое поле, пользователь должен заполнить значение от и до. Заполнение имен собственности: (В загрузке страницы)

foreach (String s in testProperties) {
    DataRow dr = dt.NewRow();
    dr[0] = s;
    dr[1] = "";
    dr[2] = "";
    dr[3] = "";
    dt.Rows.Add(dr);
}

Когда пользователь нажимает «Сохранить», я должен прочитать все данные, которые он заполнил. (В btnSave нажмите)

foreach (GridDataItem dataItem in RadGrid1.Items) {
   String[] str = new String[3];
   str[0] = ((TextBox)dataItem["col2"].FindControl("TextBox2")).Text;
   str[1] = ((RadDatePicker)dataItem["col3"].FindControl("RadDatePicker1")).SelectedDate.ToString();
   str[2] = ((RadDatePicker)dataItem["col4"].FindControl("RadDatePicker2")).SelectedDate.ToString();
   properties.Add(((TextBox)dataItem["col1"].FindControl("TextBox1")).Text, str);
}

Теперь у меня проблема. Когда я считываю данные, все мои 'str' имеют значение "" вместо данных, которые вводит пользователь.

Вопрос в том, почему мои значения в текстовых полях остаются ""? Или это лучший способ считывания данных?

Ответы [ 3 ]

0 голосов
/ 08 мая 2010

Используете ли вы Bind () или Eval () в GridTemplateColumns?

См: GridEditableItem UpdateValues ​​не работает с GridTemplateColumn?

Если GridTemplateColumns не нужны, я бы предложил использовать GridBoundColumns и события ItemCommand RadGrid или InsertCommand / UpdateCommand.

Вы можете считывать данные из GridDataItem или GridEditableItem, используя e.Item.OwnerTableView, например:

RadGrid1_UpdateCommand(object source, GridCommandEventArgs e)
{
GridEditableItem editedItem = (GridEditableItem)e.Item;
Hashtable values = new Hashtable();
e.Item.OwnerTableView.ExtractValuesFromItem(values, editedItem);
}
0 голосов
/ 10 августа 2010

Эта ошибка обычно возникает, если вы повторно привязываете данные к radgrid во время обратной передачи и перед событием обновления. Старайтесь не связывать радгрид до того, как произойдет какое-либо событие.

0 голосов
/ 07 мая 2010

Я бы реорганизовал код следующим образом, а затем запустил бы в режиме отладки - при этом сделайте шаг и убедитесь, что TextBox действительно действительно «найдены» (то есть: они не должны быть нулевыми)

foreach (GridDataItem dataItem in RadGrid1.Items) {
   String[] str = new String[3];
   TextBox textBox1 = (TextBox)(dataItem["col1"].FindControl("TextBox1"));
   TextBox textBox2 = (TextBox)(dataItem["col2"].FindControl("TextBox2"));
   RadDatePicker datePicker1 = (RadDatePicker)(dataItem["col2"].FindControl("RadDatePicker1"));
   RadDatePicker datePicker2 = (RadDatePicker)(dataItem["col4"].FindControl("RadDatePicker2"));

   // stop here and check the controls from the previous 4 lines 
   // to make sure they are not null

   str[0] = textBox2.Text;
   str[1] = datePicker1.SelectedDate.ToString();
   str[2] = datePicker2.SelectedDate.ToString();
   properties.Add(textBox1.Text, str);

}

...