#c# #sql #wpf #xaml #datagrid
#c# #sql #wpf #xaml #datagrid
Вопрос:
У меня есть datagrid, в котором я отображаю свои данные из itemsource, который объединил таблицы. Как я могу создать столбец в datagrid для полей с одинаковыми именами? Я попробовал что-то вроде Binding=»{Привязка table1.name }» и привязка=»{Привязка table2.name }», но он показывает пустой. это тот же мой код: XAML:
<DataGrid x:Name="dataGrid" HorizontalAlignment="Left" VerticalAlignment="Top" Height="227" Width="1102" Margin="0,202,0,0"
ItemsSource="{Binding DataSource}" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Name1" Binding="{Binding table1.name}" Width="300" />
<DataGridTextColumn Header="Name2" Binding="{Binding table2.name}" Width="300"/>
</DataGrid.Columns>
</DataGrid>
мой код, лежащий в основе:
public void ocitajTabelu()
{
using (SqlConnection sc = new SqlConnection(ConString))
{
sc.Open();
string query = "select * from table1 left join table2 on table1.name_id = table2.id where table.order_id=@id";
SqlCommand com = new SqlCommand(query, sc);
com.Parameters.Add("@id", SqlDbType.Int).Value = Convert.ToInt32(selectedID);
using (SqlDataAdapter adapter = new SqlDataAdapter(com))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
adapter.Update(dt);
dataGridPretragaObjekta.ItemsSource = dt.DefaultView;
}
sc.Close();
}
}
Комментарии:
1. выбор * — плохая практика (что, если ваши таблицы вырастут до десятков столбцов, а вам нужен только 1?). Но вы должны использовать псевдоним столбца (выберите table1.foo foo1, table2.foo foo2 …)
2. @KevinRaffay Вы должны опубликовать это в качестве ответа
3. да, но здесь это не проблема. или вы говорите мне, что если вместо select * у меня есть select table1.name , выберите table2.name это сработает?
4. Это должно быть, потому что тогда вы могли бы привязаться к table1.foo1 и table2.foo2 — у них будут разные имена столбцов.
Ответ №1:
выбор * — плохая практика (что, если ваши таблицы вырастут до десятков столбцов, а вам нужен только 1?). Но вы могли бы создать псевдоним для столбца (выберите table1.foo foo1, table2.foo foo2 …)
Это должно сработать, потому что тогда вы могли бы привязаться к table1.foo1 и table2.foo2 — у них будут разные имена столбцов.