2015-12-06 6 views
0

На моей веб-странице есть календарь, стол и кнопка.Сохраните таблицу и установите флажки после обратной передачи

После выбора даты он будет запускать метод таблицы databind(). Есть флажки с autopostback = true. После проверки таблица исчезает. Я понятия не имею, как сохранить таблицу с отмеченными флажками после сообщения назад.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.QueryString.Get("Id") != null) 
     { 

      if (!IsPostBack) 
      { 
       Calendar1.Visible = false; 

      } 
     } 
    } 

protected void Calendar1_SelectionChanged(object sender, EventArgs e) 
     { 
      Label1.Text = Calendar1.SelectedDate.ToShortDateString(); 
      //Set datasource = (cal.selectedDate), the invoking override 
       // DataBind() method to create table 

       } 
      Calendar1.Visible = false; 

     } 

Я попытался привязка таблицу снова еще (IsPostBack), но я был не в состоянии достичь своих целей, вместо этого, он создал еще одну таблицу поверх существующей таблицы

Это метод для создания таблицы с флажками

public override void DataBind() 
    { 
      TableRow myTableRow = default(TableRow); 
      TableCell myTableCell = default(TableCell); 

     if (source != null && !(mDate == DateTime.MinValue)) 
     { 

      for (int i = 0; i <= 23; i++) 
      { 

       foreach (DataRow row in source.Tables["Object"].Rows) 
       { 
        myTableCell = new TableCell(); 
        CheckBox cb = new CheckBox(); 
        cb.AutoPostBack = true; 
        cb.Attributes.Add("id", row["objid"].ToString()); 
        cb.InputAttributes.Add("rowID", mDate.Date.AddHours(i).ToString()); 
        myTableCell.Controls.Add(cb); 
        myTableCell.HorizontalAlign = HorizontalAlign.Center; 

        myTableRow.Cells.Add(myTableCell); 


        TimeSheetTable.Rows.Add(myTableRow); 
       } 
      } 
     } 
     else 
     { 
      throw new ArgumentException(" Invalid Date."); 
     } 
    } 
+0

Где код, который создает таблицу? Ничто здесь не связано с таблицей, а флажки внутри таблицы? –

ответ

1

Динамически сгенерированные таблицы необходимо регенерировать при каждой обратной передаче. Для последующих postbacks viewstate будет перезагружен, но вы должны воссоздать таблицу, ячейки и элементы управления точно так же, иначе веб-формы будут жаловаться на это. Вы должны сделать это во время Init, я верю; если флажок установлен, статус изменен, структура веб-форм обновит свойство Checked после загрузки, так что об этом позаботятся.

Обычно я использую ретранслятор или элемент управления списком, поскольку динамические элементы управления могут быть болезненными, а ListView довольно гибкий. Databinding заботится о восстановлении дерева управления для вас.

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