我在窗口(WPF)中有一个按钮,我编写了C#代码,其中包含以下内容:
<Button x:Name="btnBuscar" Content="Buscar por" HorizontalAlignment="Left" Margin="157,10,0,0" VerticalAlignment="Top" Width="85" Height="30" Click="btnBuscar_Click"/>
一个组合框:
<ComboBox x:Name="cmbBuscarPor" HorizontalAlignment="Left" Margin="247,10,0,0" VerticalAlignment="Top" Width="120" Height="30">
<ComboBoxItem Content="Nombre"/>
<ComboBoxItem Content="Apellido paterno"/>
<ComboBoxItem Content="Puesto"/>
</ComboBox>
一个文本框:
<TextBox x:Name="tbBusqueda" Height="30" Margin="0,10,160,0" TextWrapping="Wrap" Text="Ingrese texto" VerticalAlignment="Top" VerticalContentAlignment="Center" HorizontalAlignment="Right" Width="230" GotFocus="tbBusqueda_GotFocus"/>
类似于以下内容的 DataGrid(更多列):
<DataGrid x:Name="dataGridUsuarios" CanUserAddRows="True" HorizontalAlignment="Left" Height="230" Margin="10,110,0,0" VerticalAlignment="Top" Width="742" KeyUp="dataGridUsuarios_KeyUp" MouseLeftButtonUp="dataGridUsuarios_MouseLeftButtonUp">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=idUsuario}" ClipboardContentBinding="{x:Null}" Header="idUsuario" HeaderStringFormat="idUsuario" Visibility="Hidden"/>
<DataGridTextColumn Binding="{Binding Path=Nombre}" ClipboardContentBinding="{x:Null}" Header="Nombre" HeaderStringFormat="Nombre" Width="105"/>
<DataGridTextColumn Binding="{Binding Path=ApellidoP}" ClipboardContentBinding="{x:Null}" Header="Apellido Paterno" HeaderStringFormat="ApellidoP" Width="105"/>
<DataGridTextColumn Binding="{Binding Path=ApellidoM}" ClipboardContentBinding="{x:Null}" Header="Apellido materno" HeaderStringFormat="ApellidoM" Width="105"/>
<DataGridTextColumn Binding="{Binding Path=Sexo}" ClipboardContentBinding="{x:Null}" Header="Sexo" HeaderStringFormat="Sexo" Width="105"/>
</DataGrid.Columns>
DataGrid 在启动时使用以下方法填充数据库的记录
public void llenadoDataGrid()
{
String consulta = "select idUsuario,Nombre,ApellidoP ,ApellidoM ,Sexo,Telefono,Edad,Puesto,NombreUsuario,Contraseña from usuarios;";
SqlDataAdapter dataAdapter = new SqlDataAdapter(consulta, new BaseDeDatos().obtenerConexion());
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
DataTableCollection collection = ds.Tables;
DataTable table = collection[0];
foreach (DataRow row in table.Rows)
{
var data = new PruebaDeLLenadoDataGrid {idUsuario = row["idUsuario"].ToString(), Nombre = row["Nombre"].ToString(),
ApellidoP = row["ApellidoP"].ToString(), ApellidoM = row["ApellidoM"].ToString(),
Sexo = row["Sexo"].ToString()
};
dataGridUsuarios.Items.Add(data);
}
}
我使用以下类,我被建议能够用以前的方法填充数据网格
class PruebaDeLLenadoDataGrid
{
public String idUsuario { get; set; }
public String Nombre { get; set; }
public String ApellidoP { get; set; }
public String ApellidoM { get; set; }
public String Sexo { get; set; }
}
当我点击搜索按钮时,我执行以下操作
private void btnBuscar_Click(object sender, RoutedEventArgs e)
{
String dato = tbBusqueda.Text;
int index = cmbBuscarPor.SelectedIndex;
if (dato != "" && dato != "Ingrese texto" && index != -1)
{
dataGridBuscador(index, dato);
}
else
{
if (index == -1)
{
MessageBox.Show("seleccione una opcion de busqueda");
}
MessageBox.Show("Ingrese un texto para la busqueda");
}
MessageBox.Show("busqueda valor index "+index);
}
搜索是使用dataGrid Buscador方法执行的,在该方法中我发送索引以使用每个不同的搜索,问题出在此处,因为执行此操作时,它执行搜索并在dataGridUsuarios中显示它,它给我一个新行,然后以上而不是仅显示搜索行
private void llenadoConBusqueda(int opcion,String dato)
{
String prueba = "";
switch (opcion)
{
case 0:
prueba = "select idUsuario,Nombre,ApellidoP ,ApellidoM ,Sexo from usuarios where Nombre ='"+dato+"';";
break;
case 1:
prueba = "select idUsuario,Nombre,ApellidoP ,ApellidoM ,Sexo from usuarios where ApellidoP ='" + dato + "';";
break;
}
SqlDataAdapter dataAdapter = new SqlDataAdapter(prueba, new BaseDeDatos().obtenerConexion());
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
DataTableCollection collection = ds.Tables;
DataTable table = collection[0];
foreach (DataRow row in table.Rows)
{
var data = new PruebaDeLLenadoDataGrid
{
idUsuario = row["idUsuario"].ToString(),
Nombre = row["Nombre"].ToString(),
ApellidoP = row["ApellidoP"].ToString(),
ApellidoM = row["ApellidoM"].ToString(),
Sexo = row["Sexo"].ToString()
};
dataGridUsuarios.Items.Add(data);
}
}
这完全取决于您如何在
DataGrid
. 如果您的情况是,您使用:要清洁它,您可以使用以下方法
Clear
:Items
如果您使用数据绑定添加数据
ItemsSource
:你应该做的是放
ItemsSource
一个null
.