Я имеющая массу неприятностей получать ObjectDataProvider работу с параметрами метода. Теперь со следующим кодом я могу просмотреть данные в дизайне визуальной студии XAML, однако, как только я попытаюсь обновить ObjectDataProvider, мои данные исчезнут. Я установил поставщик данных объекта с пятью параметрами, хотя они не передаются в запрос набора данных, я просто хочу проверить, могу ли я сначала передать эти параметры. Я запускаю метод фильтра внизу, чтобы обновить OBJDataProvider, и мой datagrid не работает?WPF DataGrid не обновляется должным образом с MethodParameters
Мои два ObjectDataProviders
<ObjectDataProvider x:Key="LogDataProvider" ObjectType="{x:Type local:LogDataProvider}"/>
<ObjectDataProvider x:Key="siteListContains" MethodName="GetLog2" ObjectType="{x:Type local:LogDataProvider}">
<ObjectDataProvider.MethodParameters>
<s:String>Red</s:String>
<s:DateTime>12:14:24</s:DateTime>
<s:DateTime>2008-01-01</s:DateTime>
<s:DateTime>12:12:12</s:DateTime>
<s:DateTime>2008-01-01</s:DateTime>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
сетку данных, и это связывание с Поставщиком данных объекта
<dg:DataGrid Name="log_datagrid" Height="230" VerticalAlignment="Stretch"
DataContext="{Binding Source={StaticResource siteListContains}}"
ItemsSource="{Binding}" AutoGenerateColumns="True"/>
Мой LogDataProvider класс
public class LogDataProvider
{
private eventlogTableAdapter adapter;
DataSet1 dataset;
public LogDataProvider()
{
dataset = new DataSet1();
adapter = new eventlogTableAdapter();
}
public DataView GetLog2(string sitestr, DateTime fromtimestr, DateTime fromdatestr, DateTime totimestr, DateTime todatestr)
{
adapter.Fill(dataset.eventlog);
return dataset.eventlog.DefaultView;
}
}
Здесь я столкнулся с проблемами, когда Я передаю sitestr в MethodParameter [0], он сразу переходит к методу GetLog2 для L ogDataProvider, не принимая в остальных параметров ... Тогда мой DataGrid гаснет :-(
private void filter_btn_Click(object sender, RoutedEventArgs e)
{
ObjectDataProvider sitelist_dataobj = this.FindResource("siteListContains") as ObjectDataProvider;
sitelist_dataobj.MethodParameters[0] = sitestr.Text.ToString();
sitelist_dataobj.MethodParameters[1] = from_timePicker.SelectedTime;
sitelist_dataobj.MethodParameters[2] = from_datepicker.SelectedDate;
sitelist_dataobj.MethodParameters[3] = to_timePicker.SelectedTime;
sitelist_dataobj.MethodParameters[4] = to_datepicker.SelectedDate;
sitelist_dataobj.Refresh();
}
Спасибо, это хорошая помощь. Хотя мой datagrid все еще пуст, как только я вызываю метод filter_btn_Click. – wonea
@wonea: Если вы посмотрите на dataset.eventlog в отладчике во время вызова GetLog2, есть ли у него данные? – Quartermeister
Да, я могу видеть внутри sitelist_dataobj в режиме отладки, и данные можно просмотреть; sitelist_dataobj.ObjectInstance.dataset.eventlog – wonea