Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Estou começando a estudar c# e estou tentando desenvolver uma aplicação em 3 camadas, porem não tenho muito conhecimento em listas e como trabalhar realmente em 3 camadas, estou aprendendo, em alguns pontos ainda tenho algumas dificuldades, como obter e exibir os dados da forma que eu quiser tenho o seguinte código:
Na camada de Database tenho este método selecionar que me retorna um data table
public DataTable Selecionar()
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
string queryString = "select * from usuarios";
SqlCommand command = new SqlCommand(queryString, connection);
command.Connection.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = command;
DataTable table = new DataTable();
adapter.Fill(table);
return table;
}
}
Na camada de Negocio, tenho uma lista de usuarios da camada modelo, que me retorna uma lista com os dados dos usuarios correto obviamente
public static List<Usuario> Selecionar()
{
var list = new List<Usuario>();
var tabela = new Database.Usuario().Selecionar();
if (tabela.Rows.Count > 0)
{
foreach (DataRow row in tabela.Rows)
{
list.Add(new Usuario()
{
cod_user = row["cod_user"].ToString(),
login_user = row["login_user"].ToString(),
nome_user = row["nome_user"].ToString(),
senha = row["senha_user"].ToString(),
email_user = row["email_user"].ToString(),
tel_user = row["tel_user"].ToString(),
permissao = row["permissao"].ToString(),
cargo = row["cargo"].ToString(),
ramal = row["ramal"].ToString(),
status = row["status_user"].ToString()
});
}
}
return list;
}
Na camada modelo tenho este codigo que me retorna o nome do usuário
public override string ToString()
{
return this.nome_user;
}
Porem eu consigo obter somente o "nome_user" claro se eu mudar para outra propriedade vou obter outra propriedade, porem eu gostaria de obter todas as informações desse usuário como código, nome, login, etc... Mas estou com uma certa dificuldade em fazer isso.Não tem a necessidade de sobrescrever o ToString(); isso é comum no Java, mas em C# não precisa.
No demais, parece que está correto..
Ah entendi, então no caso eu estava criando tudo isso baseado em um curso que estava fazendo de c# mesmo, e o instrutor realizou esse método de sobrescrever ToString(), se eu retirar no caso o metódo de sobrescrever o ToString() para acessar os dados do usuário teria que criar uma variavel que vai guardar a lista e para acessar teria que utilizar Lista[Linha].Propriedade correto ?
Esse método de override ToString() esta sendo utilizando para quando utilizar o método Selecionar() ele trazer o nome do usuário como por exemplo:
Nessa list box ele adiciona o nome dos usuários.
retirando o override do ToString() como poderia fazer isso ?
lsbUsuarios.DataSource = IUsuario.Selecionar();
Sem ver todo o codigo estou chutando que o this é uma instancia de Usuario, correto ? Se sim, ali você já tem tudo o que precisa.
Na minha opnião sua camada modelo esta errada. Por que criou uma propriedade string substituindo o ToString() ? Acho que deveria criar uma propriedade do tipo Usuario.