【发布时间】:2010-06-21 11:01:14
【问题描述】:
我在让 ObjectDataProvider 与方法参数一起工作时遇到了很多麻烦。现在使用以下代码,我可以在 XAML Visual Studio 设计器中查看数据,但是一旦我尝试刷新 ObjectDataProvider,我的数据就会消失。我已经设置了一个带有五个参数的对象数据提供程序,虽然这些参数没有传递给数据集查询,但我只是想看看我是否可以先传递这些参数。我在底部运行过滤器方法以刷新 OBJDataProvider 并且我的数据网格变为空白?
我的两个 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] 时,它会立即跳转到 LogDataProvider 的 GetLog2 方法,而没有接受其余参数......然后我的数据网格变为空白: -(
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();
}
【问题讨论】:
标签: wpf c#-4.0 wpfdatagrid