무엇이 내가 쓴 것을 찾을 수 있나요?ObjectDataSource를 사용하여 ListView를 목록으로 채우는 방법
내 전화 번호 "foreach (ProductCrash productCrash in _fiveLastest)
"은 잘못되었지만 어떤 대안도 표시되지 않습니다. 나는 foreach 밖으로 타는 것을 얻지 않을 것이고 ListView가 ...을 위해 그것의 마술을 행하는 을한다. 이것을하는 방법을 아는가? 그것은 정말로 나를 도와 줄 것입니다.
하나의 개체 만 내 ListView에 표시 할 수 있습니다. ObjectDataSource를 사용하여 ListView와 내 목록을 바인딩하고이를 변경하지 않으려합니다.
내 ascx.cs fil에서 Entity를 사용하여 _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);
}
}
}
}
는하여 ItemDataBound 이벤트는 모든 항목에 대해 한 번 해고 내 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 DataSource 바인딩합니다. e.Item.DataItem에서 "DataItem"을 가져올 수 없습니다. 좋은 해결책은 인덱스를 사용하는 것입니다. ProductCrash productCrash = _fiveLastest [index]; 하지만 물론 적당하지 않습니다. – radbyx
e.Item.DataItem에서 데이터 항목을 가져올 수 없다는 말은 예외가 있거나 null 객체를 사용한다는 의미입니까? – Spyros
내 컴퓨터에 동일한 코드를 작성했는데 ListView 컨트롤에서 ObjectDataSource 및 DataSourceID를 사용하지 않으면 완벽하게 작동했습니다. 오류는 무엇입니까? – Spyros