Menu dinâmico na Master Page

04/02/2014

0

Quero colocar em uma das opções de menu, submenus onde os itens estão em uma tabela do banco de dados.

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

Otilia Schall

Responder

Posts

04/02/2014

Leandro Chiodini

Boa tarde,

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,
Responder

04/02/2014

Otilia Schall

A estrutura é:

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

Responder

04/02/2014

Leandro Chiodini

Depura e ve se em algum momento
este comando

SubmenuModel(Convert.ToInt32(dr["key_tsite_submenu_produtos"]), dr["nom_submenu"].ToString());

Não recebe parametros nulos.
Responder

04/02/2014

Otilia Schall

Não recebe.
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.
Responder

04/02/2014

Leandro Chiodini

opa...

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,
Responder

04/02/2014

Otilia Schall

E vc pode informar-me com faço?
Responder

04/02/2014

Otilia Schall

Consegui assim na site.master.cs

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.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar