моя консультация - скорее теория, мне нужно, чтобы ComboBox, который берет стоимость bd mysql, показал два поля таблицы. Я попытался изменяя консультацию, включая SELECT
SELECT campos, concat(campo1, ' ' ,campo2) as CAMPOFINAL from Tabla1
и в DisplayMember
контроля помещать CAMPOFINAL
но совсем не.
Если бы они смогли давать мне идею как, делать это, он им был бы благодарен.
Спасибо. Я издаю:
код для combobox c# (он не является Веб, - рабочий стол)
this.cmbDevUsuario.DataSource = new Solicitante().listaSolicitantes();
this.cmbDevUsuario.SelectedIndex = 0;
this.cmbDevUsuario.ValueMember = "idUsuario";
this.cmbDevUsuario.DisplayMember = "NombreCompleto";
список dataSource приходит из здесь (Ходатайствующего Класса):
public List<Solicitante> listaSolicitantes()
{
solicitanteBD = new SolicitanteBD(this);
return solicitanteBD.listaSolicitantes();
}
Класс Доступа Данных SolicitanteBD содержит:
public List<Solicitante> listaSolicitantes()
{
List<Solicitante> lista = new List<Solicitante>();
String consulta = "SELECT idUsuario, concat(NombrePed, ' ', ApellidoPed) as NombreCompleto, Telefono from usuario";
MySqlDataAdapter adaptador = new MySqlDataAdapter(consulta, this.cn);
adaptador.Fill(this.tabla);
foreach (DataRow fila in this.tabla.Rows)
{
Solicitante autFill = new Solicitante(fila[0].ToString(), fila[1].ToString(), fila[2].ToString());
lista.Add(autFill);
}
return lista;
}
И когда я делаю это таким, comboBox ничего не показывает мне.
Он советовал бы, что ты использовал reader
, чтобы наполнять список
public List<Solicitante> listaSolicitantes()
{
List<Solicitante> lista = new List<Solicitante>();
string consulta = "SELECT idUsuario, concat(NombrePed, ' ', ApellidoPed) as NombreCompleto, Telefono from usuario";
MySqlCommand cmd = new MySqlCommand(consulta, this.cn);
var reader = cmd.ExecureReader();
while(reader.Read())
{
Solicitante autFill = new Solicitante(reader["idUsuario"].ToString(),
reader["NombreCompleto"].ToString(),
reader["Telefono"].ToString());
lista.Add(autFill);
}
return lista;
}
, Кроме того попробуй помещать свойства DisplayMember
и ValueMember
перед DataSource
var dataAccess = new Solicitante();
var solicitantes = dataAccess.listaSolicitantes();
cmbDevUsuario.ValueMember = "idUsuario";
cmbDevUsuario.DisplayMember = "NombreCompleto";
cmbDevUsuario.DataSource = solicitantes;
cmbDevUsuario.SelectedIndex = 0;
у тебя Должен быть класс, как тебя
public class Solicitante
{
public string idUsuario {get;set;}
public string NombreCompleto {get;set;}
public string Telefono {get;set;}
}
тогда, когда ты повторяешь, ты мог бы использовать
while(reader.Read())
{
Solicitante autFill = new Solicitante()
{
idUsuario = reader["idUsuario"].ToString(),
NombreCompleto = reader["NombreCompleto"].ToString(),
Telefono = reader["Telefono"].ToString()
};
lista.Add(autFill);
}
так ты не нуждаешься никакой строитель
DisplayMember
. Ты определяешь свойства в классеSolicitante
? или это публичные переменные? – Leandro Tuttini 18.03.2019, 20:18