我错过了什么?如何使用ObjectDataSource填充列表视图
我的线路“foreach (ProductCrash productCrash in _fiveLastest)
”是错误的,但我看不到任何选择。我不会让赛车出局,让ListView 对我来说是神奇的 ..有没有人知道如何做到这一点?这真的会帮助我。
我只能显示其中一个对象来自我的ListView中的列表。我使用ObjectDataSource将我的列表与ListView绑定,并且不想改变它。
在我的ascx.cs fil我检索列表_fiveLastest与实体。
private List<ProductCrash> _fiveLastest;
protected void Page_Load(object sender, EventArgs e)
{
index = 0;
_dataAccess = new DataAccess();
_fiveLastest = _dataAccess.TimeStampForCrashByIndex();
_fiveLastest.Sort((x, y) => y.CrashTimeStamp.CompareTo(x.CrashTimeStamp));
}
protected void ListView2_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
foreach (ProductCrash productCrash in _fiveLastest)
{
Label statusLabel = (Label)e.Item.FindControl("TimeStampLabel");
Label productIDLabel = (Label)e.Item.FindControl("ProductIDLabel");
if (index < _fiveLastest.Count)
{
productIDLabel.Text = productCrash.ProductName;
statusLabel.Text = DatetimeHelper.MyDateTimeFormat(productCrash.CrashTimeStamp);
}
}
}
}
=========
这里是我的ListView,ItemTemplate中,LayoutTemplate模板和ObjectDataSource
<asp:ListView ID="ListView2" runat="server" DataSourceID="ObjectDataSource1" onitemdatabound="ListView2_ItemDataBound">
<ItemTemplate>
<tr style="background-color: #FFFFFF;color: #000000;">
<td style="padding: 5px 5px;">
<asp:Label ID="ProductIDLabel" runat="server" />
</td>
<td style="padding: 5px 5px;">
<asp:Label ID="TimeStampLabel" runat="server" />
</td>
</tr>
</ItemTemplate>
<LayoutTemplate>
<table runat="server">
<tr runat="server">
<td runat="server">
<table ID="itemPlaceholderContainer" runat="server" border="1"
style=" background-color: #FFFFFF;border-color: #999999;border-style:solid;border-width:1px;font-family: Verdana, Arial, Helvetica, sans-serif;">
<tr id="Tr1" runat="server" style="background-color: #DCDCDC;color: #333333; text-align:left; padding: 5px 10px;">
<th runat="server" style="padding: 5px 5px; text-transform:uppercase;">
Produkt</th>
<th runat="server" style="padding: 5px 5px; text-transform:uppercase;">
Tidspunkt</th>
</tr>
<tr ID="itemPlaceholder" runat="server">
</tr>
</table>
</td>
</tr>
</table>
</LayoutTemplate>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="CreateStateLog" TypeName="Website.StateLog"
UpdateMethod="CreateStateLog">
<UpdateParameters>
<asp:Parameter Name="stateLogID" Type="Int32" />
<asp:Parameter Name="productID" Type="Int32" />
<asp:Parameter Name="status" Type="Int32" />
<asp:Parameter Name="timeStamp" Type="DateTime" />
</UpdateParameters>
<SelectParameters>
<asp:Parameter Name="stateLogID" Type="Int32" />
<asp:Parameter Name="productID" Type="Int32" />
<asp:Parameter Name="status" Type="Int32" />
<asp:Parameter Name="timeStamp" Type="DateTime" />
</SelectParameters>
</asp:ObjectDataSource>
Thx。我只是将数据源与我的ListView绑定。 虽然我无法获取e.Item.DataItem中的“DataItem”。 我的不好的解决方法是使用索引 ProductCrash productCrash = _fiveLastest [index]; ,但当然这不是最优的。 – radbyx 2010-06-03 14:39:39
当你说你不能从e.Item.DataItem中获取数据项时,你的意思是说你有一个异常或者你接受一个空对象? – Spyros 2010-06-03 16:26:31
我在我的电脑上写了相同的代码,它完美的工作,而不使用ListView控件中的ObjectDataSource和DataSourceID什么是你得到的错误? – Spyros 2010-06-03 16:36:29