c# - tablas - optimizar consultas lentas mysql
c#Enlace en una fila específica en la tabla (4)
Usando c # .net 2.0, quiero vincular un cuadro de texto a una fila específica de mi tabla. Por ejemplo :
Table Person
ID NAME PRENOM SPECIAL_CATEGORY
1 BOB BOB mex
2 AL AL tot
3 PO PO pap
Quiero vincular mi cuadro de texto en el nombre del campo donde la fila contiene special_categeory = ''tot''. ¿Es posible? o necesito crear un Datarow para esta fila y vincularlo.
Deberías poder unir vía ...
myNameTextBox.DataBindings.Add( "Text", MyTable, "NAME" );
myPrenomTextBox.DataBindings.Add( "Text", MyTable, "PRENOM" );
mySpecial_CategoryTextBox.DataBindings.Add( "Text", MyTable, "SPECIAL_CATEGORY" );
De hecho, tengo un marco que se desplaza a través de todos los controles, y si coinciden con un nombre de columna en una tabla determinada, inmediatamente se unen como se muestra arriba.
Luego, cuando recorra la cuadrícula, también debería actualizar los controles de texto individuales en su formulario también.
Si hay algún enlace que deba hacerse, puede seguir este patrón:
DataView dv = new DataView(MyTable);
dv.RowFilter = "SPECIAL_CATEGORY = ''tot''";
GridView1.DataSource = dv;
GridView1.DataBind();
Pero no creo que se una a un TextBox? Puede configurar la propiedad de texto como:
foreach(DataRow dr in MyTable.Rows)
{
if (dr["SPECIAL_CATEGORY"] != DBNull.Value &&
dr["SPECIAL_CATEGORY"].ToString() == "tot")
{
myTextBox.Text = dr["NAME"].ToString()
break;
}
}
Suponiendo que está hablando de Winforms y ya tiene su fuente de datos como componente en su formulario, esto es bastante simple.
Arrastre un nuevo BindingSource
en su formulario y configure su origen de datos para que sea el que sea su fuente de datos existente. A continuación, puede especificar una expresión de filtrado en la nueva propiedad Filter
BindingSource
en el diseñador. Enlace su TextBox
a su nuevo BindingSource
y ya está todo listo.
Hacer esto manualmente (sin el diseñador) es solo un poco más complicado.
BindingSource newSource = new BindingSource();
newSource.DataSource = yourExistingDataSource;
newSource.Filter = "special_categeory = ''tot''";
textBox.DataBindings.Add("Text", newSource, "DataMember");
Voy a suponer que es Winforms y así es como puedes hacerlo:
myTable.DefaultView.RowFilter = "SPECIAL_CATEGORY = ''tot''";
this.textBox1.DataBindings.Add("Text",myTable.DefaultView,"Name");