ban*_*ing 0 c# asp.net listview
当我调用ListView的DataBind()方法时,我收到以下异常消息
'Table' cannot have children of type 'ListViewDataItem'.
这是我的标记
<asp:ListView ID="lv" runat="server">
<LayoutTemplate>
<asp:Table ID="t" runat="server" CssClass="contentframework">
<asp:TableHeaderRow>
<asp:TableHeaderCell>1</asp:TableHeaderCell>
<asp:TableHeaderCell>2</asp:TableHeaderCell>
</asp:TableHeaderRow>
<asp:TableRow ID="itemPlaceHolder" runat="server" />
</asp:Table>
</LayoutTemplate>
<ItemTemplate>
<asp:TableRow>
<asp:TableCell><%# Eval("1") %></asp:TableCell>
<asp:TableCell><%# Eval("2") %></asp:TableCell>
</asp:TableRow>
</ItemTemplate>
<EmptyDataTemplate>
<h2>No Records!</h2>
</EmptyDataTemplate>
</asp:ListView>
Run Code Online (Sandbox Code Playgroud)
Asp.net服务器端控件有一些层次结构.所以它不允许ListViewDataItem作为元素的子asp:Table元素.
所以,最好你尝试简单的html表标签而不是服务器标签,如:
<asp:ListView ID="lv" runat="server">
<LayoutTemplate>
<table id="t" class="contentframework">
<thead>
<th>
1
</th>
<th>
2
</th>
</thead>
<tr id="itemPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<%# Eval("1") %>
</td>
<td>
<%# Eval("2") %>
</td>
</tr>
</ItemTemplate>
<EmptyDataTemplate>
<h2>
No Records!</h2>
</EmptyDataTemplate>
</asp:ListView>
Run Code Online (Sandbox Code Playgroud)
至于名单的参考图,你可以看看这个文章.
更多细节:
您正面临异常,因为ListViewDataItem类表示ListView控件(DataBoundControl)中的单个数据项,因此它不能直接作为Table类的子控件,但是当您直接嵌入时它可能是HTML表的子项它变成了html标签(如上面的代码所示).