2017-10-19 163 views
0

我想根據類別顯示子類別我將Listview放在另一個ListView中,但內部Listview在名爲'lvSubCategories'的cs文件中拋出一個錯誤,在當前情況下不存在。錯誤:在當前上下文中不存在名稱'lvSubCategories'

listView可以不包含另一個listview本身內?

這裏是我的Test.aspx標記:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="ShoppingHeart.Test" %> 
    <!DOCTYPE html> 

    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
     <title></title> 
     <link href="css/font-awesome.css" rel="stylesheet" /> 
     <link href="Scripts/bootstrap.css" rel="stylesheet" /> 
     <script src="Scripts/jquery-3.1.1.js"></script> 
     <script src="Scripts/bootstrap.js"></script> 
     <link href="Styling/TablesStyle.css" rel="stylesheet" /> 
     <link href="Styling/paneLStyle.css" rel="stylesheet" /> 
     <link href="Styling/NavBarStyle.css" rel="stylesheet" /> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
      <div> 
       <nav class="navbar navbar-default" style="background-color: rgba(154, 153, 153, 0.93)"> 
        <div class="container"> 
         <div class="navbar-header"> 
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> 
           <span class="icon-bar"></span> 
           <span class="icon-bar"></span> 
           <span class="icon-bar"></span> 
          </button> 
          <asp:Image ID="Image1" Height="60px" Width="85px" ImageUrl="~/Images/FinalLogo.png" 
           runat="server" /> 
         </div> 
         <div class="collapse navbar-collapse" id="myNavbar"> 

          <ul class="nav navbar-nav"> 

           <asp:ListView ID="lvCategories" runat="server"> 
            <ItemTemplate> 
             <li class="dropdown"> 
              <a href="#" class="dropdown-toggle" data-toggle="dropdown"> 
               <%# Eval("CategoryName") %> <span class="caret"></span> 
              </a> 
              <asp:ListView ID="lvSubCategories" runat="server"> 
               <ItemTemplate> 
                <ul class="dropdown-menu"> 
                 <li><a href="#"><%# Eval("SubCategoryName") %></a></li> 
                </ul> 
               </ItemTemplate> 
              </asp:ListView> 
             </li> 

            </ItemTemplate> 
           </asp:ListView> 
          </ul> 
         </div> 
        </div> 
       </nav> 

       <asp:Button ID="btnLoadCategories" runat="server" Text="Load Categories" 
        OnClick="btnLoadCategories_Click" /> 
      </div> 
     </form> 
    </body> 
    </html> 

這裏是我的Test.aspx.cs代碼:

using System; 
    using System.Collections.Generic; 
    using System.Configuration; 
    using System.Data; 
    using System.Data.SqlClient; 
    using System.Linq; 
    using System.Web; 
    using System.Web.UI; 
    using System.Web.UI.WebControls; 

    namespace ShoppingHeart 
    { 
     public partial class Test : System.Web.UI.Page 
     { 
      protected void btnLoadCategories_Click(object sender, EventArgs e) 
      { 
       var ds = new DataSet(); 
       var ds1 = new DataSet(); 

       string Categoryquery = "Select * from Category"; 
       string SubCategoryquery = "Select SubCategoryName from SubCategory where CategoryId = 1003"; 

       string ConString = ConfigurationManager.ConnectionStrings["MyCon"].ConnectionString.ToString(); 

       using (var conn = new SqlConnection(ConString)) 
       { 
        var adpt = new SqlDataAdapter(Categoryquery, conn); 
        adpt.Fill(ds); 

        lvCategories.DataSource = ds; 
        lvCategories.DataBind(); 
       } 

       using (var conn = new SqlConnection(ConString)) 
       { 
        var adpt = new SqlDataAdapter(SubCategoryquery, conn); 
        adpt.Fill(ds1); 

        lvSubCategories.DataSource = ds1; 
        lvSubCategories.DataBind(); 
       } 
      } 
     } 
    } 

回答

0

因爲它是一個嵌套的ListView你沒有直接訪問。你需要使用FindControl。可在OnItemDataBound事件ListView控件

<asp:ListView ID="lvCategories" runat="server" OnItemDataBound="lvCategories_ItemDataBound"> 

protected void lvCategories_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    ListView lvSubCategories = e.Item.FindControl("lvSubCategories") as ListView; 

    lvSubCategories.DataSource = source; 
    lvSubCategories.DataBind(); 
} 

,或者通過索引訪問的項目中使用。

ListView lvSubCategories = lvCategories.Items[i].FindControl("lvSubCategories") as ListView; 

lvSubCategories.DataSource = source; 
lvSubCategories.DataBind(); 
+0

令人驚歎的作品,謝謝。 –

相關問題