在GridView中显示重复的项目

时间:2009-09-08 21:28:56

标签: asp.net data-binding

我有一个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控件,还是有更好的方法来实现这一目标?感谢。

2 个答案:

答案 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。尝试谷歌搜索一些例子。如果你没有运气,我会在以后再次回到这里,如果你没有运气的话,我会再次回到这里。