【发布时间】:2026-02-22 02:05:01
【问题描述】:
我创建了一个程序,需要在我的 WPF 应用程序底部显示 5 个数据网格,但是该程序一次只能显示一个。 或者它会显示 3 个框,但只有一个 Datagrid 会包含任何数据。
这是我目前的代码:
private void SearchButton_Click(object sender, RoutedEventArgs e)
{
if (GPBox.IsChecked == true)
{
connect = new MySqlConnection(connectionString);
cmd = new MySqlCommand("select distinct nameOfService as Surgeries, street, city, postcode, contactNumber from gpSurgery", connect);
connect.Open();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
connect.Close();
DataGridGP.Visibility = Visibility.Visible;
DataGridGP.DataContext = dt;
}
else if (DentistBox.IsChecked == true)
{
connect = new MySqlConnection(connectionString);
cmd = new MySqlCommand("select distinct nameOfService as Dentists, street, city, postcode, contactNumber from Dentist", connect);
connect.Open();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
connect.Close();
DataGridDentist.Visibility = Visibility.Visible;
DataGridDentist.DataContext = dt;
}
else if (SchoolsBox.IsChecked == true)
{
connect = new MySqlConnection(connectionString);
cmd = new MySqlCommand("select distinct nameOfService as Schools, street, city, postcode, contactNumber from Schools", connect);
connect.Open();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
connect.Close();
DataGridSchools.Visibility = Visibility.Visible;
DataGridSchools.DataContext = dt;
}
else if (NurseryBox.IsChecked == true)
{
connect = new MySqlConnection(connectionString);
cmd = new MySqlCommand("select distinct nameOfService as Nurserys, street, city, postcode, contactNumber from Nursery", connect);
MySqlDataAdapter sqlDA = new MySqlDataAdapter();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
connect.Close();
DataGridNursery.Visibility = Visibility.Visible;
DataGridNursery.DataContext = dt;
}
else if (OpticianBox.IsChecked == true)
{
connect = new MySqlConnection(connectionString);
cmd = new MySqlCommand("select distinct nameOfService as Opticians, street, city, postcode, contactNumber from Opticians", connect);
MySqlDataAdapter sqlDA = new MySqlDataAdapter();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
connect.Close();
DataGridOpticians.Visibility = Visibility.Visible;
DataGridOpticians.DataContext = dt;
}
else
{
MessageBox.Show("Select a service.");
}
}
XAML 代码:
<DataGrid Name="DataGridGP" Height="57" VerticalAlignment="Top" Margin="0,129,10,0" ItemsSource="{Binding}" Visibility="Collapsed" />
<DataGrid Name="DataGridDentist" HorizontalAlignment="Left" Height="57" Margin="0,191,0,0" VerticalAlignment="Top" Width="782" Visibility="Collapsed"/>
<DataGrid Name="DataGridSchools" HorizontalAlignment="Left" Height="57" Margin="0,253,0,0" VerticalAlignment="Top" Width="782" Visibility="Collapsed"/>
<DataGrid Name="DataGridNursery" Height="57" Margin="0,315,10,0" VerticalAlignment="Top" Visibility="Collapsed"/>
<DataGrid Name="DataGridOpticians" HorizontalAlignment="Left" Height="57" Margin="0,377,0,0" VerticalAlignment="Top" Width="782" Visibility="Collapsed"/>
谁能明白为什么它只显示一个 Datagrid 或根本不显示?
谢谢
【问题讨论】:
-
@Gleb 我现在已经添加了 XAML