2017-10-19 8 views
0

카테고리에 따라 하위 카테고리를 표시하려고합니다. Listview를 다른 listview에 배치하고 있지만 내부 Listview는 cs 파일에서 'lvSubCategories'라는 이름의 오류를 발생시킵니다. 현재 컨텍스트에 존재하지 않습니다.오류 : 이름 'lvSubCategories'이 (가) 현재 컨텍스트에 존재하지 않습니다.

listView 자체 내부에 다른 listview를 포함 할 수 있습니까? 여기

<%@ 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 코드입니다 : 당신이 더 직접 액세스 할 수없는 중첩 된 ListView에 있기 때문에

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

여기 내 Test.aspx 마크 업입니다. FindControl을 사용해야합니다. 즉 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(); 
} 

OnItemDataBound 경우에 또는 인덱스 항목에 액세스하여 사용할 수 있습니다.

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

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

나를위한 놀라운 작품. –