从datareader填充listview Web控件

时间:2014-05-17 22:06:30

标签: asp.net vb.net listview

这是我第一次尝试使用listviews,而且我花了一天的时间在墙上试图让它成功。我创建了一个列表视图,我试图填充来自Oracle DB的数据。我试图使用datareader来填充列表视图,但我很难让它工作。对于listview表单控件有很多实现这一点,但对于Web控件来说并不多。任何帮助将不胜感激。

我能够得到的最远的是:

While reader.Read

   Dim obj As New ListViewDataItem((reader(0)), (reader(1)))
   lsvGeneratedForms.Items.Add(obj)

End While

但是这只允许我读取2个对象(我需要输入4个)并且我遇到类型转换错误,因为我的DB只包含字符串& date数据类型。

列表视图的标记:

<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>

1 个答案:

答案 0 :(得分:0)

为了说明我的例子,创建一个类:

Public Class MyItem

    Public Property AGREEMENT_NUM As String
    Public Property GEN_DATE As String
    Public Property LE_ACCOUNT As String
    Public Property STATUS As String
End Class

这与您在<ItemTemplate>中填充的字段相匹配。

接下来,您可以将读者的结果映射到班级:

Dim myItems As List(Of MyDataItem) = New List(Of MyDataItem)()

While (reader.Read())
    Dim newItem As New MyDataItem With { .AGREEMENT_NUM = reader(0).ToString(), .GEN_DATE = reader(1).ToString(), .LE_ACCOUNT = reader(2).ToString(), .STATUS = reader(2).ToString() }
    myItems.Add(newItem)
End While  

然后你可以绑定列表:

MyListView.DataSource = myItems
MyListView.DataBind()

以上代码就是一个示例 - 您需要根据代码进行相应调整。重要的是确保您绑定的对象集合具有标记中使用的相应字段名称。