我的網站在c#&是完全動態的。菜單欄也是動態的。每個導航菜單都有子菜單..因爲菜單需要從數據庫構建我已經使用Listview控件。在我的菜單網站中,我需要在一個父級Listview中使用2個子Listview。所以它看起來像這樣。嵌套的ListView無法從父列表視圖獲取值
父菜單列表視圖有子菜單列表視圖&子菜單列表視圖,有一個孩子在列表視圖,我需要表現出任何一個與產品相關的父列表視圖類別..
我的子菜單已妥善建造,但裏面如果我嘗試綁定另一個列表視圖,然後它顯示我的錯誤(對象引用沒有設置爲對象的一個實例。)然後,我嘗試使用手動SQL查詢,而沒有從ItemDataBound定義的where子句,然後它也顯示相同的錯誤。
<asp:ListView ID="mainMenu" runat="server" DataKeyNames="name" OnItemDataBound="OnItemDataBound">
<ItemTemplate>
<li><asp:HyperLink ID="mainLinks" runat="server" NavigateUrl='<%# Eval("name", "~/{0}") %>' Text='<%# Eval("name") %>'></asp:HyperLink>
<ul class="super-child">
<asp:ListView ID="childMenu" runat="server" DataKeyNames="name">
<ItemTemplate>
<div class="super-child-inner">
<div class="list-child">
<li><asp:HyperLink ID="cat3" runat="server" NavigateUrl='<%# Eval("category") & Eval("name", "/{0}") %>' Text='<%# Eval("name") %>'></asp:HyperLink></li>
</div>
<div class="recommended">
<asp:ListView ID="recommendedProducts" runat="server">
<ItemTemplate>
<div class="rec-img">
<asp:Image ID="recImg" runat="server" ImageUrl='<%# Eval("image") %>' />
</div>
<p class="rec-name"><asp:HyperLink ID="recLink" runat="server" NavigateUrl='<%# Eval("category") & Eval("name", "/{0}") %>' Text='<%# Eval("name") %>'></asp:HyperLink></p>
</ItemTemplate>
</asp:ListView>
</div>
</div>
</ItemTemplate>
</asp:ListView>
</ul>
</li>
</ItemTemplate>
</asp:ListView>
的ItemDataBound代碼
protected void onItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem) {
ListViewDataItem itm = (ListViewDataItem)e.Item;
string name = mainMenu.DataKeys(itm.DataItemIndex)("name");
ListView childMenu = e.Item.FindControl("childMenu") as ListView;
ListView recommendedProducts = e.Item.FindControl("recommendedProducts") as ListView;
string constr = ConfigurationManager.ConnectionStrings("conio").ConnectionString;
using (MySqlConnection con = new MySqlConnection(constr)) {
using (MySqlCommand cmd = new MySqlCommand()) {
cmd.CommandText = "SELECT * FROM product_categories WHERE category = '" + name + "' and status = 'active'";
cmd.Connection = con;
using (MySqlDataAdapter sda = new MySqlDataAdapter(cmd)) {
DataTable dt = new DataTable();
sda.Fill(dt);
childMenu.DataSource = dt;
childMenu.DataBind();
}
}
}
try {
string constr2 = ConfigurationManager.ConnectionStrings("conio").ConnectionString;
using (MySqlConnection con = new MySqlConnection(constr2)) {
using (MySqlCommand cmd = new MySqlCommand()) {
cmd.CommandText = "SELECT ID,slug,product_name,image FROM products WHERE (category Like @category) and status = 'active' Limit 1";
cmd.Connection = con;
cmd.Parameters.AddWithValue("@categoty", "%" + name + "%");
using (MySqlDataAdapter sda = new MySqlDataAdapter(cmd)) {
DataTable dt = new DataTable();
sda.Fill(dt);
recommendedProducts.DataSource = dt;
recommendedProducts.DataBind();
}
}
}
} catch (Exception ex) {
Response.Write(ex);
}
}
}
(在子菜單,在這裏我想顯示力量的銀行類的一個產品空白空間(右側))更新(例外)
System.NullReferenceException:未設置對象引用t o一個對象的實例。在E:\ MY WEB \ brandstik.com1 \ MasterPage.master.vb中的MasterPage.onItemDataBound(對象發件人,ListViewItemEventArgs e)中:line 79System.NullReferenceException:未將對象引用設置爲對象的實例。在E:\ MY WEB \ brandstik.com1 \ MasterPage.master.vb中的MasterPage.onItemDataBound(對象發件人,ListViewItemEventArgs e)中:line 79System.NullReferenceException:未將對象引用設置爲對象的實例。在E:\ MY WEB \ brandstik.com1 \ MasterPage.master.vb中的MasterPage.onItemDataBound(對象發件人,ListViewItemEventArgs e)中:line 79System.NullReferenceException:未將對象引用設置爲對象的實例。在E:\ MY WEB \ brandstik.com1 \ MasterPage.master.vb中的MasterPage.onItemDataBound(對象發件人,ListViewItemEventArgs e)中:line 79System.NullReferenceException:未將對象引用設置爲對象的實例。在E:\ MY WEB \ brandstik.com1 \ MasterPage.master.vb中的MasterPage.onItemDataBound(對象發件人,ListViewItemEventArgs e)中:line 79System.NullReferenceException:未將對象引用設置爲對象的實例。在E:\ MY WEB \ brandstik.com1 \ MasterPage.master.vb中的MasterPage.onItemDataBound(對象發件人,ListViewItemEventArgs e)中:line 79System.NullReferenceException:未將對象引用設置爲對象的實例。在E:\ MY WEB \ brandstik.com1 \ MasterPage.master.vb中的MasterPage.onItemDataBound(對象發件人,ListViewItemEventArgs e)中:line 79System.NullReferenceException:未將對象引用設置爲對象的實例。在E:\ MY WEB \ brandstik.com1 \ MasterPage.master.vb中的MasterPage.onItemDataBound(對象發件人,ListViewItemEventArgs e)中:line 79System.NullReferenceException:未將對象引用設置爲對象的實例。在E:\ MY WEB \ brandstik.com1 \ MasterPage.master.vb中的MasterPage.onItemDataBound(對象發件人,ListViewItemEventArgs e)中:line 79System.NullReferenceException:未將對象引用設置爲對象的實例。在MasterPage.onItemDataBound(對象發件人,ListViewItemEventArgs e)如E:\ MY WEB \ brandstik.com1 \ MasterPage.master.vb:線79
我認爲名稱存在問題 - 在您的DOM ListView中,ID是= recommendedProduct,但您試圖將數據綁定到ListView recommendedProducts,因此請先檢查它。 – SilentCoder
@codelahiru Ys您是對的我在那裏犯了錯誤,但我用正確的名稱改了它,但問題仍然是一樣的 – SUN
除了'對象引用沒有設置爲對象的實例嗎?這意味着在將數據綁定到該實例之前,您並未從實例創建任何新對象。 – SilentCoder