2014-02-27 191 views
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

列表項爲空?或只是空的(0計數)?在asp.net中,我從來沒有真正見過「空」列表視圖。此外,列表視圖是否在提交之前在屏幕上顯示項目? – 2014-02-27 16:56:59

+0

上帝我討厭嵌套表!而且MS把這個提升到一個全新的水平! – Paul

+0

注意:由於查找「Finalist」失敗,您可能會遇到異常。您沒有控制權的「決賽」ID。另外,'ListItem'控件通常不包含其下的許多其他控件... – 2014-02-27 17:09:41

回答

0

插入或更新數據,模板< InsertTemplate則>和/或< EditItemTemplate裏>應該包括在內,也許他們錯過了。模板< ItemTemplate>和< AlternateItemTemplate>僅用於顯示數據。要更改模板,請添加一些命令按鈕。而你使用綁定而不是Eval

雖然你在以下鏈接有一個演練,但不是很好。也許你可以找到一個更好的例子。

http://msdn.microsoft.com/en-us/library/bb515103.aspx