Ted k' 126 Denunciar post Postado Maio 5, 2009 Preciso de uma ajuda galera... tenho essa class aqui, as importações "using" não são problemas, resumi o codigo aqui: using System; using System.Data; using System.Data.Odbc; using System.Configuration; using FuncoesGerais; public partial class Listar : System.Web.UI.Page{ // Criando objetos de Funções. Funcoes fn = new Funcoes(); string sql; // Usando o Page_Load para exibir dados diretamente na página. protected void Page_Load(object sender, System.EventArgs e){ BindGrid(); } // DataGrid da página Listar.aspx. public void BindGrid(){ DataSet ds = new DataSet(); OdbcConnection conn = new OdbcConnection(fn.parteConexao()); OdbcDataAdapter adapter = new OdbcDataAdapter("SELECT * FROM material_apoio WHERE empreendimento = '" + Convert.ToString(Session["empreendimento"]) + "'", conn); adapter.Fill(ds, "material_apoio"); MyDataGrid.DataSource = ds.Tables[0].DefaultView; MyDataGrid.DataBind(); } // Passando a paginação. public void myDataGrid_Page(object sender, System.Web.UI.WebControls.DataGridPageChangedEventArgs e){ MyDataGrid.CurrentPageIndex = e.NewPageIndex; BindGrid(); } // Procurando a Categoria quando está listando. public void LocalizarCategoria(string codigoCategoria){ // Abrindo a Conexão para os SQL's. OdbcConnection conn = new OdbcConnection(fn.parteConexao()); conn.Open(); try { sql = "SELECT nome FROM material_apoio_categoria WHERE codigo = '" + Convert.ToInt32(codigoCategoria) + "' AND empreendimento = '" + Convert.ToString(Session["empreendimento"]) + "'"; OdbcCommand comando = new OdbcCommand(sql, conn); OdbcDataReader rs = comando.ExecuteReader(); if (rs.HasRows){ Response.Write(rs["nome"].ToString()); } conn.Close(); } catch { Response.Write(fn.alert("Ocorreu um Erro em Categorias.", "../Default.aspx")); } } } na pagina default.aspx tenho isso: <%@ Page Language="C#" AutoEventWireup="True" CodeFile="class/Listar.aspx.cs" Inherits="Listar" %> <%@ Assembly Src="../class/Funcoes.cs" %> <form runat="server"> <asp:DataGrid runat="server" id="MyDataGrid" Width="720px" PageSize="30" AllowPaging="True" AlternatingItemStyle-BackColor="#F3F3F3" AutoGenerateColumns="False" BorderWidth="0" CellPadding="0" CellSpacing="2" BorderColor="#FFFFFF" HeaderStyle-CssClass="classFonte05" HeaderStyle-BackColor="#E8E8E8" HeaderStyle-HorizontalAlign="Center" HeaderStyle-Font-Bold="True" HeaderStyle-Height="25" ItemStyle-Height="22" ItemStyle-CssClass="classFonte06" ItemStyle-HorizontalAlign="Center" OnPageIndexChanged="myDataGrid_Page"> <columns> <asp:TemplateColumn> <HeaderTemplate><div style="width: 70px;">DATA</div></HeaderTemplate> <ItemTemplate><div style="width: 70px;" class="mousePointer" onclick="url('MaterialApoio.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "codigo") %>');"><%# string.Format("{0:dd/MM/yyyy}", DataBinder.Eval(Container.DataItem, "data_cadastro")) %></div></ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate><div style="width: 255px;">TÍTULO</div></HeaderTemplate> <ItemTemplate><div style="width: 255px;" class="mousePointer" onclick="url('MaterialApoio.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "codigo") %>');"><script language="javascript">ifVazio("<%# DataBinder.Eval(Container.DataItem, "titulo") %>");</script></div></ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate><div style="width: 234px;">CATEGORIA</div></HeaderTemplate> <ItemTemplate><div style="width: 234px;" class="mousePointer" onclick="url('MaterialApoio.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "codigo") %>');"><script language="javascript">ifVazio("<%# LocalizarCategoria(DataBinder.Eval(Container.DataItem,"categoria")) %>");</script></div></ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate><div style="width: 93px;">STATUS</div></HeaderTemplate> <ItemTemplate><div style="width: 93px;" class="mousePointer" onclick="url('MaterialApoio.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "codigo") %>');"><script language="javascript">ifVazio("<%# DataBinder.Eval(Container.DataItem, "estatus") %>");</script></div></ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn> <HeaderTemplate><div style="width: 33px;">DEL</div></HeaderTemplate> <ItemTemplate><input type="checkbox" name="codigo" id="codigo" value="<%# DataBinder.Eval(Container.DataItem, "codigo") %>" /></ItemTemplate> </asp:TemplateColumn> </columns> <pagerstyle Height="50" HorizontalAlign="Center" CssClass="classPaginacao" Mode="NumericPages" /> </asp:DataGrid> </form> está gerando esse erro aqui: Descrição: Erro ao compilar um recurso necessário para atender esta solicitação. Examine os detalhes específicos do erro e modifique o código fonte apropriadamente. Mensagem de Erro do Compilador: CS1502: Melhor método sobrecarregado compatível com 'Listar.LocalizarCategoria(string)' tem alguns argumentos inválidos a linha que dar o erro é essa: <ItemTemplate><div style="width: 234px;" class="mousePointer" onclick="url('MaterialApoio.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "codigo") %>');"><script language="javascript">ifVazio("<%# LocalizarCategoria(DataBinder.Eval(Container.DataItem,"categoria")) %>");</script></div></ItemTemplate> galera do .net, eu desistir como posso resolver isso? Compartilhar este post Link para o post Compartilhar em outros sites
Juliano.net 2 Denunciar post Postado Maio 5, 2009 Altere o código do procedimento abaixo para que o parâmetro seja do tipo Object ao invés de String: public void LocalizarCategoria(string codigoCategoria) Passaria a: public void LocalizarCategoria(object codigoCategoria) Compartilhar este post Link para o post Compartilhar em outros sites
Ted k' 126 Denunciar post Postado Maio 5, 2009 troquei e deu esse erro: Mensagem de Erro do Compilador: CS1502: Melhor método sobrecarregado compatível com 'System.Convert.ToString(object, System.IFormatProvider)' tem alguns argumentos inválidos na mesma linha! quando eu troco essa linha: <%# LocalizarCategoria(DataBinder.Eval(Container.DataItem,"categoria")) %> por essa: <%# DataBinder.Eval(Container.DataItem,"categoria") %> aparece o numero da categoria, só que eu quer é com o numero da categoria chamar o nome dela com essa função que criei Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Maio 5, 2009 Se estiver acontecendo o que eu estou pensando e aconteceu comigo esses dias, seu parâmetro de entrada terá que ser object e dentro do método você deve extrair a propriedade ToString, lógico que isso não é a forma mais adequada, mas tive esse problema quando user um Repeater, e a única forma foi criando o parâmetro de entrada como object. Faça o teste. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Ted k' 126 Denunciar post Postado Maio 5, 2009 acredite, eu não entendi!! :huh: Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Maio 5, 2009 Aqui: // Procurando a Categoria quando está listando. public void LocalizarCategoria(string codigoCategoria){} Tente: // Procurando a Categoria quando está listando. public void LocalizarCategoria(object codigoCategoria){} Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Ted k' 126 Denunciar post Postado Maio 6, 2009 mais já fiz isso, o juliano que citou isso tbm mais deu o mesmo erro anteriormente postado... Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Maio 6, 2009 Verdade não reparei passei rápido pelos posts, mals... Compartilhar este post Link para o post Compartilhar em outros sites
Ted k' 126 Denunciar post Postado Maio 6, 2009 e ai, tô perdido, como posso prosseguir sem esse erro? tentei outras coisas mais nada! Compartilhar este post Link para o post Compartilhar em outros sites
Oenning 0 Denunciar post Postado Maio 6, 2009 Tente mudar seu metodo LocalizarCategoria para retornar string ao inves de void. Dentro dele, ao inves de dar Response.Write use return. Compartilhar este post Link para o post Compartilhar em outros sites
Ted k' 126 Denunciar post Postado Maio 7, 2009 nada man: erro: Mensagem de Erro do Compilador: CS0161: 'Listar.LocalizarCategoria(object)': nem todos os caminhos de código retornam um valor linha: public string LocalizarCategoria(object codigoCategoria){ troquei para object, string, int, nada man!! tá ruim pra mim!! Compartilhar este post Link para o post Compartilhar em outros sites
Juliano.net 2 Denunciar post Postado Maio 7, 2009 Ted, Faça um teste da seguinte forma: <ItemTemplate><div style="width: 234px;" class="mousePointer" onclick="url('MaterialApoio.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "codigo") %>');"><script language="javascript">ifVazio("<%# LocalizarCategoria((String)DataBinder.Eval(Container.DataItem,"categoria")) %>");</script></div></ItemTemplate> Compartilhar este post Link para o post Compartilhar em outros sites
Ted k' 126 Denunciar post Postado Maio 7, 2009 esse erro: Mensagem de Erro do Compilador: CS0161: 'Listar.LocalizarCategoria(object)': nem todos os caminhos de código retornam um valor linha: public string LocalizarCategoria(object codigoCategoria){ olha como está: public string LocalizarCategoria(object codigoCategoria){ // Abrindo a Conexão para os SQL's. OdbcConnection conn = new OdbcConnection(fn.parteConexao()); conn.Open(); sql = "SELECT nome FROM material_apoio_categoria WHERE codigo = '" + Convert.ToInt32(codigoCategoria) + "' AND empreendimento = '" + Convert.ToString(Session["empreendimento"]) + "'"; OdbcCommand comando = new OdbcCommand(sql, conn); OdbcDataReader rs = comando.ExecuteReader(); if (rs.HasRows){ return rs["nome"].ToString(); } conn.Close(); } lembrando que a função está dentro de uma classe, como citei no primeiro post Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Maio 7, 2009 Este ultimo erro é pq seu retorno esta dentro de um IF, deve haver um retorno padrão, para caso ele não entre no IF. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Ted k' 126 Denunciar post Postado Maio 7, 2009 erro: Detalhes da Exceção: System.InvalidOperationException: Não existem dados para a linha ou coluna. linha: return rs["nome"].ToString(); Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Maio 7, 2009 Você precisa utilizar o Método Read: If(rs.Read()) return rs["Nome"].ToString(); Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Ted k' 126 Denunciar post Postado Maio 7, 2009 erro: Mensagem de Erro do Compilador: CS0161: 'Listar.LocalizarCategoria(object)': nem todos os caminhos de código retornam um valor codigo do erro: public string LocalizarCategoria(object codigoCategoria){ man, e está passando valor!!! Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Maio 7, 2009 Você colocou um valor padrão de retorno no seu método? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Ted k' 126 Denunciar post Postado Maio 7, 2009 vamos lá. se eu deixar assim: <%# DataBinder.Eval(Container.DataItem,"categoria") %> ele me retornar o ID da categoria, que é "26", quando eu coloco o nome da função, gera os erros. a função está assim: public string LocalizarCategoria(object codigoCategoria){ // Abrindo a Conexão para os SQL's. OdbcConnection conn = new OdbcConnection(fn.parteConexao()); conn.Open(); sql = "SELECT nome FROM material_apoio_categoria WHERE codigo = '" + Convert.ToInt32(codigoCategoria) + "' AND empreendimento = '" + Convert.ToString(Session["empreendimento"]) + "'"; OdbcCommand comando = new OdbcCommand(sql, conn); OdbcDataReader rs = comando.ExecuteReader(); if (rs.Read()){ return rs["nome"].ToString(); } conn.Close(); } Compartilhar este post Link para o post Compartilhar em outros sites
Oenning 0 Denunciar post Postado Maio 8, 2009 Tipo, sua funcao retorna uma string, certo? Mas so existe um lugar no seu metodo que voce usa o return, e este return esta dentro de um bloco condicional if. Sua funcao so vai retornar um valor quando ele entrar no if. O que acontece se ele nao entrar no IF? Nao vai retornar nada, ai da erro! Sua logica pode ser alterada para isso: if (rs.Read()){ return rs["nome"].ToString(); } else return string.Empty;Se nao achar nada no SELECT, retorna uma string vazia. Ou voce poderia dar fazer assim: return "Categoria nao cadastrada". Compartilhar este post Link para o post Compartilhar em outros sites