Сетка данных связывается в wpf с одним статическим столбцом, а остальные динамически - PullRequest
0 голосов
/ 26 марта 2012

Я работаю над WPF, где мне нужно связать сетку данных. Я стараюсь объяснить мою проблему, если возникнут сомнения, пожалуйста, спросите.

Я могу связать сетку данных, используя следующий код:

Представление XAML:

 <DataGrid Height="257" HorizontalAlignment="Left" Margin="20,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="Auto"></DataGrid> 

Представление CS:

SqlDataAdapter da = new SqlDataAdapter("select staticcolumn,column1,column2,column3,column4 from TBL_SENSORS", connection);
        DataSet ds = new DataSet();
        da.Fill(ds, "SensorZones");

dataGrid1.ItemsSource = dataset.Tables [0] .DefaultView;ataGrid1.DataContext = dataset.Tables [0];

этот код дает мне сетку с именами столбцов по умолчанию, переданными из базы данных.

Но проблема в том, что в моем приложении у меня есть один выпадающий список, откудамне нужно выбрать имена столбцов, такие как column1, column2.На основе этого выбора мне нужно связать сетку данных только с этими столбцами, но во всех случаях я хочу, чтобы мой staticcolumn присутствовал с измененным именем Date Recorded и оставил выбранный столбец с именем по умолчанию.

Спасибо

1 Ответ

0 голосов
/ 27 марта 2012

Лично я бы предпочел использовать linq

Однако вам нужно иметь отдельный запрос, основанный на каждом элементе в выпадающем списке.

Что-тонапример:

public string SelectedComboboxItem
{
    get
    {
          return _selectedComboboxItem;
    } 
    set
    {
         _selectedComboboxItem = value;
         OnPropertyChanged(SelectedComboboxItem);

         SqlDataAdapter da;
         select (_selectedComboboxItem)
         {
               case "Column 1":
                   da = new SqlDataAdapter("select staticcolumn,column from TBL_SENSORS", connection);


               case "Column 2":
                   da = new SqlDataAdapter("select staticcolumn,column2 from TBL_SENSORS", connection);


          //All the other queries go here

         }

         DataSet ds = new DataSet();
         da.Fill(ds, "SensorZones");

         dataGrid1.ItemsSource = dataset.Tables[0].DefaultView; 
         dataGrid1.DataContext = dataset.Tables[0];
    }
}

Таким образом, вы привязываете выбранный элемент вашего комбобокса к этому свойству (вам нужно реализовать INotifyPropertyChanged ), а затем у вас должен быть свой источник данных для каждого выбора.К сожалению, это должно сбросить сетку данных, поэтому я не уверен, что это то, что вы ищете.

В качестве альтернативы, вы можете просто создать конвертер и связать выбранный элемент Combobox со свойством видимости столбцов, если вы просто хотитесделать столбцы невидимыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...