Menu dinâmico na Master Page
04/02/2014
0
A rotina para criar a lista com os registros está ok.
O que não sei é como montar o código na Master Page.
No site.master coloquei:
<asp:ListView ID="lvMenu" runat="server">
<ItemTemplate>
<li><a href="Produtos.aspx?id=<%#DataBinder.Eval(Container.DataItem, "key_tsite_submenu_produtos")%>">
<img src="../App_Themes/site/images/menuAmarelo.gif" alt="" style="padding: 3px 5px 0 0" /><%#DataBinder.Eval(Container.DataItem, "nom_submenu")%></a></li>
</ItemTemplate>
</asp:ListView>
Na página site.master.cs coloquei:
if (!Page.IsPostBack)
{
MenuProdutos();
}
}
public void MenuProdutos()
{
SubmenuDAL menu = new SubmenuDAL();
ListView lvMenu = (ListView)this.Master.FindControl("LvMenu");
lvMenu.DataSource = menu.ListaAllSubmenu();
lvMenu.DataBind();
Não dá erro de compilação, mas quando vou executar dá o ero
System.NullReferenceException: Object reference not set to an instance of an object. na linha lvMenu.DataSource = menu.ListaAllSubmenu();
Aguém pode informar-me como faço?
Obrigada
Otilia Schall
Posts
04/02/2014
Leandro Chiodini
Se voce puder colocar a estrutura do metodo LisAll li
vai ajudar, pois pode estar dando erro dentro deste metodo,
porem como nao esta tratado estoura na linha de chamada.
att,
04/02/2014
Otilia Schall
public List<SubmenuModel> ListaAllSubmenu()
{
List<SubmenuModel> lista = new List<SubmenuModel>();
SqlDataReader dr = DB.ExecuteReader(DB.ConnectionStringSQL, CommandType.Text, "SELECT key_tsite_submenu_produtos, nom_submenu FROM TSITE_SUBMENU_PRODUTOS WHERE tag_exibir = 1 order by num_ordem");
while (dr.Read())
{
SubmenuModel sm = new SubmenuModel(Convert.ToInt32(dr["key_tsite_submenu_produtos"]), dr["nom_submenu"].ToString());
lista.Add(sm);
}
return lista;
}
O select retorna 7 registros
1 Teste e Medição
2 Teste de Componentes
3 Análise de Gases
4 Sistemas de Monitoração
5 Soldagem Dessoldagem SMD e BGA
6 Metrologia Dimensional
7 Sensores
04/02/2014
Leandro Chiodini
este comando
SubmenuModel(Convert.ToInt32(dr["key_tsite_submenu_produtos"]), dr["nom_submenu"].ToString());
Não recebe parametros nulos.
04/02/2014
Otilia Schall
Mostra todos os 5 registros.
Acho q o código que está na Master Page é que está errado.
Mas já pesquisei em vários fóruns e não encontro o q preciso.
04/02/2014
Leandro Chiodini
entao é os dados que voce esta colocando no datasource,
que ele esta convertendo de uma maneira incorreta.
Pois o erro é que a referencia do objeto esta nula
ou seja nao existe.
att,
04/02/2014
Otilia Schall
public void MenuProdutos()
{
SubmenuDAL menu = new SubmenuDAL();
ListView LvMenu = (ListView)this.Master.FindControl("ContentPlaceTopo").FindControl("lvMenu");
LvMenu.DataSource = menu.ListaAllSubmenu();
LvMenu.DataBind();
}
Obrigada pela ajuda Leandro.
Clique aqui para fazer login e interagir na Comunidade :)