GOOGLE ADS

jueves, 28 de abril de 2022

¿Cómo puedo buscar elementos de un cuadro de lista dependiendo de una variable?

Soy nuevo en C# y trato de buscar un cuadro de lista de la siguiente manera: Primero tengo esto:

 public partial class FrmCodes: Form
{
...
SqlConnection Cn = new SqlConnection(@"Server = AMR-PC\SQLEXPRESS; Database=PlanningDB; Integrated Security = True");
SqlCommand cmd;
SqlDataReader DataRead;
...
public FrmCodes()
{
InitializeComponent();
cmd = new SqlCommand("Select Item from Items", Cn);
Cn.Open();
DataRead = cmd.ExecuteReader();
while (DataRead.Read())
{
ListItems.Items.Add(DataRead["Item"].ToString());
}
DataRead.Close();
Cn.Close();
}

Y trató de hacer esto:

private void txtSrch_TextChanged(object sender, EventArgs e)
{
ListItems.Items.Clear();
while (DataRead.Read())
{
string str = DataRead["Item"].ToString();
string srch = txtSrch.Text;
if (str.Contains(srch))
{
ListItems.Items.Add(str);
}
}
}

No funcionó, traté de hacer una nueva consulta de selección de sql que obtuviera datos dependiendo de txtSrch.Textpero tampoco obtuve nada. Gracias por adelantado.

Edición # 1
Esta es la consulta que mencioné antes:

private void txtSrch_TextChanged(object sender, EventArgs e)
{
ListItems.Items.Clear();
SqlConnection Cn2 = new SqlConnection(@"Server = AMR-PC\SQLEXPRESS; Database=PlanningDB; Integrated Security = True");
Cn2.Open();
string srch = txtSrch.Text;
using (SqlDataAdapter a2 = new SqlDataAdapter("Select Item from Items WHERE Item LIKE '%" + srch + "%'", Cn2))
{
var t2 = new DataTable();
a2.Fill(t2);
ListItems.DisplayMember = "Item";
ListItems.ValueMember = "Code";
ListItems.DataSource = t2;
}
}

Esto no afectó a los elementos en el cuadro de lista, no pasa nada en txtSrchCambiar.


Solución del problema

Otra solución Dataviewgracias a @Trevor

public partial class FrmCodes: Form
{
...
SqlConnection Cn = new SqlConnection(@"Server = AMR-PC\SQLEXPRESS; Database=PlanningDB; Integrated Security = True");
SqlDataAdapter da;
DataTable dt = new DataTable();
...
public FrmCodes()
{
InitializeComponent();
da = new SqlDataAdapter("Select Item from Items", Cn);
da.Fill(dt);
DataView dv = new DataView(dt);
ListItems.DataSource = dv;
ListItems.DisplayMember = "Item";
}

Cambio de cuadro de texto:

private void txtSrch_TextChanged(object sender, EventArgs e)
{
ListItems.DataSource = null;
DataView dv = new DataView(dt);
string srch = txtSrch.Text;
dv.RowFilter = string.Format("Item Like '%{0}%'", srch);
ListItems.DataSource = dv;
ListItems.DisplayMember = "Item";
}

Gracias.

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...