我有一个GridView绑定到某些XML数据,如下所示:
<Root>
<Column1>
<Item1 type="l1style">Item 1</Item1>
<Item2 type="l2style">Item 2</Item2>
<Item3 type="l3style">Item 3</Item3>
</Column1>
<Column2>
<Item4 type="l1style">Item 4</Item4>
<Item5 type="l2style">Item 5</Item5>
</Column2>
<Column3>
<Item6 type="l1style">Item 6</Item6>
<Item7 type="l2style">Item 7</Item7>
</Column3>
</Root>
但在某些情况下,Column3节点不存在。
我想渲染类似:
<table>
<thead>
<tr>
<th scope="col">Column1</th>
<th scope="col">Column2</th>
<th scope="col">Column3</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<ul>
<li class="l1style">Item 1</li>
<li class="l2style">Item 2</li>
<li class="l3style">Item 3</li>
</ul>
</td>
<td>
<ul>
<li class="l1style">Item 4</li>
<li class="l2style">Item 5</li>
</ul>
</td>
<td>
<ul>
<li class="l1style">Item 6</li>
<li class="l2style">Item 7</li>
</ul>
</td>
</tr>
</tbody>
</table>
如何在GridView中使用Repeater控件,还是有更好的方法来实现这一目标?感谢。
答案 0 :(得分:1)
看起来像html可以由转发器或datalist发出,没有网格。
如果使用gridview,则会在模板字段列中的itemtemplate中放置转发器。您必须将某些内容绑定到gridview,以便呈现一行以供转发器显示。
<Columns>
<asp:TemplateField>
<ItemTemplate>
Your Repeater
我认为单独一个转发器会做你想要的。
答案 1 :(得分:1)
您正在显示的html也存在问题,因为您预期输出。您没有使用与您的列标题<td>
匹配的<th>
来显示行中的任何列。
你应该输出类似的东西:
<table>
<tr>
<th> ... </th>
<th> ... </th>
<th> ... </th>
</tr>
<tr>
<td> ... </td>
<td> ... </td>
<td> ... </td>
</tr>
...
史蒂夫说得对,你可以通过转发器实现这一目标。只需声明一个标题模板来保存开始表标记和标题行,一个页脚模板来保存表格的结束标记,以及一个项目模板来输出,猜测项目行的内容。
您还可以尝试使用称为xsl样式表的somthing进行xml转换。你加载你的XML,应用转换,嘿presto格式良好的HTML。尝试谷歌搜索一些例子。如果你没有运气,我会在以后再次回到这里,如果你没有运气的话,我会再次回到这里。