2012-02-14 2 views
0

У меня есть asp: GridView, что мне нужно отобразить 2 строки заголовков ... Первый за несколько дней (например, понедельник, вторник и т. Д.), А второй - «Нормальное время» 'и' Overtime '.asp: GridView с несколькими строками заголовков с использованием HTML

Я сделал это, динамически добавив код в gridview_RowDataBound, проблема в том, что страница повторно загружает/делает postback, а затем добавленная строка отпадает, а GridView больше не запускает функции javascript, используемые на нем , Иногда это случается, но я понятия не имею, почему.

Страница в основном форма ввода расписания. Пользователь выбирает дату из datepicker (страница затем повторно загружается, и это то, что когда-то кажется сумасшедшим).

Это то, что моя сетка выглядит сейчас:

enter image description here

Используя следующий код:

   Table tbl = e.Row.Parent as Table; 
      var row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal); 

      TableCell cell = new TableCell(); 
      cell.Text = ""; 
      cell.ColumnSpan = 3; 
      row.Cells.Add(cell); 

      cell = new TableCell(); 
      cell.Text = "Monday"; 
      cell.ColumnSpan = 2; 
      cell.HorizontalAlign = HorizontalAlign.Center; 
      row.Cells.Add(cell); 

      cell = new TableCell(); 
      cell.Text = "Tuesday"; 
      cell.ColumnSpan = 2; 
      cell.HorizontalAlign = HorizontalAlign.Center; 
      row.Cells.Add(cell); 

      cell = new TableCell(); 
      cell.Text = "Wednesday"; 
      cell.ColumnSpan = 2; 
      cell.HorizontalAlign = HorizontalAlign.Center; 
      row.Cells.Add(cell); 

      cell = new TableCell(); 
      cell.Text = "Thursday"; 
      cell.ColumnSpan = 2; 
      cell.HorizontalAlign = HorizontalAlign.Center; 
      row.Cells.Add(cell); 

      cell = new TableCell(); 
      cell.Text = "Friday"; 
      cell.ColumnSpan = 2; 
      cell.HorizontalAlign = HorizontalAlign.Center; 
      row.Cells.Add(cell); 

      cell = new TableCell(); 
      cell.Text = "Saturday"; 
      cell.ColumnSpan = 2; 
      cell.HorizontalAlign = HorizontalAlign.Center; 
      row.Cells.Add(cell); 

      cell = new TableCell(); 
      cell.Text = "Sunday"; 
      cell.ColumnSpan = 2; 
      cell.HorizontalAlign = HorizontalAlign.Center; 
      row.Cells.Add(cell); 

      cell = new TableCell(); 
      cell.Text = ""; 
      cell.ColumnSpan = 2; 
      row.Cells.Add(cell); 

      tbl.Rows.AddAt(tbl.Rows.Count - 1, row); 

Но я хотел бы знать, если есть в любом случае я могу получить сетку в образ, чтобы выглядеть таким образом с HTML вместо того, чтобы делать это в коде, потому что это, кажется, разбивает сетку больше всего на свете.

Благодаря

(я должен добавить, что строки заголовка 'нормальный'/'OT' устанавливаются в HTML с помощью:

<asp:TemplateField HeaderText="OT" HeaderStyle-HorizontalAlign="Center"> 
+0

ListView - гораздо лучший выбор, если вы можете использовать 3.0+ – ScottE

ответ

0

Вы можете сделать следующее в вашем <EditItemTemplate> тег:

<EditItemTemplate> 

<table> 
    <tr> 
     <td colspan=2>Monday</td > 
     <td colspan=2>Tuesday</td > 
     <td colspan=2>Wednesday</td > 
     <td colspan=2>Thursday</td > 
     <td colspan=2>Friday</td > 
     <td colspan=2>Saturday</td > 
     <td colspan=2>Sunday</td > 
    </tr> 

    <tr> 
     <td>Normal</td> 
     <td>OT</td> 
     <td>Normal</td> 
     <td>OT</td> 

     ... 
     ... 
     ... 
    </tr> 

    <tr> 
     <TD><asp:Textbox ID="txtBox1" runat="server"/></TD> 
     <TD><asp:Textbox ID="txtBox2" runat="server"/></TD> 
     <TD><asp:Textbox ID="txtBox3" runat="server"/></TD> 
     <TD><asp:Textbox ID="txtBox4" runat="server"/></TD> 

     ... 
     ... 
     ... 

    </tr> 
</table> 

</EditItemTemplate> 

Вы можете заполнить остальное в ... (точечных точках)

Надеюсь, что это поможет :)

+0

Спасибо, это определенно лучшее решение для просто получить правильную функциональность. Взгляд и чувство придется ждать. – Melanie

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