2013-06-19 2 views
2

У меня есть SQL таблица, как это,WPF DataGrid не dispay всех значений

Name | 03.04.2013 | 05.04.2013 | 07.03.2013 | 09.04.2013 
--------|----------------|----------------|--------------|--------------- 

Я хочу, чтобы отобразить эту таблицу в DataGrid.

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Fee", sc2); 


DataTable dt = new DataTable(); 
da.Fill(dt); 

datagrid2.ItemsSource = dt.DefaultView; 

Когда я попробовал это, DataGrid показывает только имена и значения из столбцов дат пустуют. (AutoGenerateColumns="true")

Я добавил mainwindows.xaml источник here и XAML код here

+1

Это вызвано точками в имени столбца. С помощью AutoGenerateColumns = "false" вы явно определяете Path of the Binding как 03.04.2013, являясь свойством 2013 свойства 04 значения 03. Предоставление имени столбца псевдонима без точки решает его, но я также хотел бы увидеть лучшее решение. – gerd

+0

, но он работал вчера, прежде чем я сделал некоторые изменения. –

+0

Я думаю, что лучшего решения нет. Я изменил точки с помощью «-», кажется, проблема решена. Спасибо за ваш ответ. –

ответ

0

Try это

 SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Fee", sc2); 
     DataSet ds = new DataSet(); 
     da.Fill(ds, "DataGridBind"); 
     datagrid2.DataContext = ds; 

В Xaml

<DataGrid Name="datagrid2" AutoGenerateColumns="True" ItemsSource="{Binding Path=DataGridBind}"> 
+0

. Тем не менее, это не имеет никакого смысла. работал вчера, я сделал некоторые изменения, то это произошло –

+0

у вас есть записи в таблице вознаграждения? –

+0

Да, он включает значения int –

0

Try с ..

string ConString = "Use your database address"; 
string CmdString = string.Empty; 
using (SqlConnection con = new SqlConnection(ConString)) 
{ 
    CmdString = "SELECT * FROM Fee"; 
    SqlCommand cmd = new SqlCommand(CmdString, con); 
    SqlDataAdapter sda = new SqlDataAdapter(cmd); 
    DataTable dt = new DataTable("Fee"); 
    sda.Fill(dt); 
    datagrid1.ItemsSource = dt.DefaultView; 
} 

Также можно просмотреть ..

+0

Мой вопрос был о WPF, я не могу использовать datagridview1.Datasource и datagridview.Readonly –

+0

Ответ отредактирован соответствующим образом. – ridoy

0

Вы можете попробовать установить AutoGenerateColumns Ложь и добавить привязки к пользовательским столбцам:

<DataGrid x:Name="MyDataGrid" AutoGenerateColumns="False"> 
    <DataGrid.Columns>      
     <DataGridTextColumn Header="Name" Binding="{Binding Path=NAME}" IsReadOnly="True" Width="*" /> 
     <DataGridTextColumn Header="Age" Binding="{Binding Path=AGE}" IsReadOnly="True" Width="*" /> 
     <DataGridTextColumn Header="Date" Binding="{Binding Path=DATE}" IsReadOnly="True" Width="*" /> 
    </DataGrid.Columns> 
</DataGrid> 

С этим вы также можете создать класс преобразователя, который расширяет IValueConverter, чтобы поместить какую-либо маску в ваши данные.

+0

В программе добавить колонку. Не было бы так сложно свяжите более 50 столбцов –

+0

Извините, я не прочитал источник, моя вина. –

Смежные вопросы