【发布时间】:2014-05-17 22:06:29
【问题描述】:
这是我第一次尝试使用列表视图,我花了一天的大部分时间都在用头撞墙试图让它发挥作用。我创建了一个列表视图,我试图用 Oracle DB 中的数据填充它。我正在尝试使用数据读取器来填充列表视图,但我很难让它工作。对于 listview 表单控件,有很多实现这一点的方法,但对于 web 控件来说却不多。任何帮助将不胜感激。
我能做到的最远的是这个:
While reader.Read
Dim obj As New ListViewDataItem((reader(0)), (reader(1)))
lsvGeneratedForms.Items.Add(obj)
End While
但这只允许我读取 2 个对象(我需要拉入 4 个)并且遇到类型转换错误,因为我的数据库仅包含字符串和日期数据类型。
列表视图的标记:
<div class="GeneratedFormsDivStyle" style="height:300px; overflow:scroll">
<asp:ListView runat="server" ID="lsvGeneratedForms">
<LayoutTemplate>
<table id="tblFormList" border="0" cellpadding="0" cellspacing="0">
<tr style="background-color:#ccdaeb">
<th align="left">
<asp:Label ID="hdrAgreeNo" runat="server" Text="Agreement No"/> </th>
<th align="left">
<asp:Label ID="hdrGenDate" runat="server" Text="Date Generated"/></th>
<th align="left">
<asp:Label ID="hdrLEAcct" runat="server" Text="Legal Entity Account"/></th>
<th align="left">
<asp:Label ID="hdrStatus" runat="server" Text="Status"/></th>
</tr>
<tr id="itemPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label runat="server" ID="lblAgreeNo"><%#Eval("AGREEMENT_NUM")%></asp:Label></td>
<td>
<asp:Label runat="server" ID="lblGenDate"><%#Eval("GEN_DATE")%></asp:Label></td>
<td>
<asp:Label runat="server" ID="lblLEAcct"><%#Eval("LE_ACCOUNT")%></asp:Label></td>
<td>
<asp:Label runat="server" ID="lblStatus"><%#Eval("STATUS")%></asp:Label></td>
</tr>
</ItemTemplate>
</asp:ListView>
</div>
【问题讨论】:
-
ListView是一个数据绑定控件。这个概念是每个“项目”对应于绑定数据源中的一个项目。该“项目”可以具有多个属性(字段)。看起来您正在尝试在后面的代码中设置所有“项目”属性。我建议更改您的方法 - 从您的数据库中创建一个“项目”集合并将该集合绑定到ListView。例如,创建一个具有与数据绑定中的名称匹配的属性的类,构建该类的List<T>并将列表绑定到控件。