0
我想通過一次使用按鈕更新整個列表,但在代碼後面我失去了列表項的數據,它返回空值,雖然它有項目。請以這種方式幫助我。我的代碼如下Listview丟失數據在回發ASP.Net
ASPX
<asp:ListView ID="ProjectsList" runat="server" DataKeyNames="ProjectId" DataSourceID="EntityDataSource1" ViewStateMode="Enabled">
<AlternatingItemTemplate>
<tr style="background-color: #FFF8DC;">
<td><asp:Label ID="ProjectIdLabel" runat="server" Text='<%# Eval("ProjectId") %>' /></td>
<td><asp:Label ID="SchoolIdLabel" runat="server" Text='<%# Eval("SchoolId") %>' /></td>
<td><asp:Label ID="FairIdLabel" runat="server" Text='<%# Eval("FairId") %>' /></td>
<td><asp:Label ID="CategoryIdLabel" runat="server" Text='<%# Eval("CategoryId") %>' /></td>
<td><asp:Label ID="TitleLabel" runat="server" Text='<%# Eval("Title") %>' /></td>
<td><asp:Label ID="BalanceLabel" runat="server" Text='<%# Eval("Balance") %>' /></td>
<td><asp:CheckBox ID="FinalistCheckBox" runat="server" Checked='<%# Eval("Finalist") %>' Enabled="true" /></td>
<td><asp:Label ID="ProjectStatusLabel" runat="server" Text='<%# Eval("ProjectStatus") %>' /></td>
</tr>
</AlternatingItemTemplate>
<ItemTemplate>
<tr style="background-color: #DCDCDC; color: #000000;">
<td><asp:Label ID="ProjectIdLabel" runat="server" Text='<%# Eval("ProjectId") %>' /></td>
<td>asp:Label ID="SchoolIdLabel" runat="server" Text='<%# Eval("SchoolId") %>' /></td>
<td><asp:Label ID="FairIdLabel" runat="server" Text='<%# Eval("FairId") %>' /></td>
<td><asp:Label ID="CategoryIdLabel" runat="server" Text='<%# Eval("CategoryId") %>' /></td>
<td><asp:Label ID="TitleLabel" runat="server" Text='<%# Eval("Title") %>' /></td>
<td><asp:Label ID="BalanceLabel" runat="server" Text='<%# Eval("Balance") %>' /></td>
<td><asp:CheckBox ID="FinalistCheckBox" runat="server" Checked='<%# Eval("Finalist") %>' Enabled="true" /></td>
<td><asp:Label ID="ProjectStatusLabel" runat="server" Text='<%# Eval("ProjectStatus") %>' /></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-collapse: collapse; border-color: #999999; border-style: none; border-width: 1px; font-family: Verdana, Arial, Helvetica, sans-serif;">
<tr runat="server" style="background-color: #DCDCDC; color: #000000;">
<th runat="server">ProjectId</th>
<th id="Th1" runat="server">SchoolId</th>
<th id="Th2" runat="server">FairId</th>
<th id="Th3" runat="server">CategoryId</th>
<th runat="server">Title</th>
<th id="Th4" runat="server">Balance</th>
<th runat="server">Finalist</th>
<th runat="server">ProjectStatus</th>
</tr>
<tr id="itemPlaceholder" runat="server">
</tr>
</table>
</td>
</tr>
<tr runat="server">
<td runat="server" style="text-align: center; background-color: #CCCCCC; font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000;"></td>
</tr>
</table>
</LayoutTemplate>
</asp:ListView>
<asp:EntityDataSource ID="EntityDataSource1" runat="server" ConnectionString="name=MyEntity" DefaultContainerName="MyEntity" EnableFlattening="False" EnableUpdate="True" EntitySetName="Projects">
</asp:EntityDataSource>
<asp:Button ID="FinalistButton" runat="server" Text="Finalist" OnClick="FinalistButton_Click" CssClass="imageButtonStyle" />
和我的aspx.cs ...
protected void FinalistButton_Click(object sender, EventArgs e)
{
//here I can have all the items but there is no value
foreach (ListViewItem item in ProjectsList.Items)
{
if (item.ItemType == ListViewItemType.DataItem)
{
CheckBox final = (CheckBox)item.FindControl("Finalist");
TextBox proidText = (TextBox)item.FindControl("ProjectId");
int proId = Convert.ToInt32(proidText.Text);
if (final.Checked)
{
//some code
}
}
}
}
列表項爲空?或只是空的(0計數)?在asp.net中,我從來沒有真正見過「空」列表視圖。此外,列表視圖是否在提交之前在屏幕上顯示項目? – 2014-02-27 16:56:59
上帝我討厭嵌套表!而且MS把這個提升到一個全新的水平! – Paul
注意:由於查找「Finalist」失敗,您可能會遇到異常。您沒有控制權的「決賽」ID。另外,'ListItem'控件通常不包含其下的許多其他控件... – 2014-02-27 17:09:41