2013-06-27 3 views
0

Я хочу добавить несколько tbody в мой asp.net table. Это то, что я пытался до сих порСоздайте несколько т динамиков

TableRow tbody = new TableRow(); 
tbody.TableSection = TableRowSection.TableBody; 
TableRow row = new TableRow(); 
TableCell cell = new TableCell(); 
row.Attributes.Add("data-filter", "featured"); 
cell.Text = "Featured"; 
row.Cells.Add(cell); 
tbody.Controls.Add(row);//throws an error saying tablerow can't have table row as child 
Table1.Rows.Add(tbody); 

Это выдает ошибку, что я не могу иметь строку таблицы, как ребенок строки таблицы, которая звучит нормально. Но я не хочу, чтобы строка находилась под номером <tbody> и не могла понять, как это сделать. Мой желаемый выход

<tbody> 
     <tr data-filter="featured"> 
     <td>Featured</td> 
     </tr> 
</tbody> 
+1

Это может помочь http://stackoverflow.com/questions/4015839/how-to-create-thead-and-tbody-in-asp -net-table – arunlalam

+0

Нет, это не помогает вообще. Я не могу динамически создавать труп. да, я могу поместить строку внутри tbody с помощью 'TableRowSection.TableBody', но я хочу несколько тбонов и смогу разместить разные строки в разные tbody. – user1

+0

Почему вы хотите, чтобы несколько тегов' tbody' находились внутри одной таблицы? Или я не понимаю ваше заявление о нескольких твитах? –

ответ

1

Множественный <tbody> элементы не представляется возможным с <asp:Table>, то TableSection свойство определяет «раздел», что строка должна быть вынесенного в, однако сам элемент управления только делает один элемент за TableRowSection

Что касается исключения, вам не нужен вложенная TableRow объекта, попробуйте следующее:

TableRow tbody = new TableRow(); 
tbody.TableSection = TableRowSection.TableBody; 
TableCell cell = new TableCell(); 
tbody.Attributes.Add("data-filter", "featured"); 
cell.Text = "Featured"; 
tbody.Cells.Add(cell); 
Table1.Rows.Add(tbody); 

Вот результат:

<table id="MainContent_Table1"> 
    <tbody> 
     <tr data-filter="featured"> 
     <td>Featured</td> 
     </tr> 
    </tbody> 
</table> 

Чтобы добиться того, что вы после этого, вы можете попробовать создать пользовательский элемент управления, или, возможно, самое простое решение, было бы использовать HtmlGenericControl и строить элементы таблицы таким образом, не самый элегантный, но он имеет желаемое результат:

var table = new HtmlGenericControl("table"); 
var tbody = new HtmlGenericControl("tbody"); 
var tr = new HtmlGenericControl("tr"); 
var td = new HtmlGenericControl("td"); 

tr.Attributes.Add("data-filter", "featured"); 
td.InnerText = "Featured"; 
tr.Controls.Add(td); 

tbody.Controls.Add(tr); 
table.Controls.Add(tbody); 

tbody = new HtmlGenericControl("tbody"); 
tr = new HtmlGenericControl("tr"); 
td = new HtmlGenericControl("td"); 
tr.Attributes.Add("data-filter", "featured"); 
td.InnerText = "Featured"; 
tr.Controls.Add(td); 

tbody.Controls.Add(tr); 
table.Controls.Add(tbody); 

Page.Controls.Add(table); 

Вот результат:

<table> 
    <tbody> 
     <tr data-filter="featured"> 
      <td>Featured</td> 
     </tr> 
    </tbody> 
    <tbody> 
     <tr data-filter="featured"> 
      <td>Featured</td> 
     </tr> 
    </tbody> 
</table> 
+0

Thats true, но как создать второй 'tbody' и добавить к нему строки, которые являются моим фактическим вопросом (' multiple tbodies') – user1

+0

Извините, что вы правы, я не рассматривал фактический вопрос, я обновил свой ответ чтобы включить более подробную информацию, надеюсь, этого будет достаточно. –

+0

Удивительный, с использованием 'HtmlGenericControl' полностью ускользнул от моей головы. Еще лучше, я думаю, что могу использовать html-таблицу с атрибутом 'runat = server'. – user1

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