我需要将用户名绑定到DomainDataSource QueryParameter。我的理解是,以下是不起作用的:
<RiaControls:DomainDataSource x:Name="MyData" LoadSize="20" QueryName="GetStockByCompany" AutoLoad="True">
<RiaControls:DomainDataSource.DomainContext>
<ds:InventoryDomainContext />
</RiaControls:DomainDataSource.DomainContext>
<RiaControls:DomainDataSource.QueryParameters>
<riadata:Parameter
ParameterName="userName"
Value="{Binding Path=User.Name}" />
</RiaControls:DomainDataSource.QueryParameters>
</RiaControls:DomainDataSource>我不反对使用页面的C#代码隐藏部分,但我不确定要将其放入哪个事件中。
到目前为止,我已经尝试过了:
public Inventory()
{
InitializeComponent();
Loaded += Inventory_Loaded;
}
private void Inventory_Loaded(object sender, RoutedEventArgs e)
{
this.MyData.QueryParameters.Add(new Parameter { ParameterName = "userID", Value = RiaContext.Current.User.Name});
}但是由于InitializeComponent()首先触发并加载数据,这会导致由于查询没有任何参数运行而导致DomainDataSource崩溃……它没有起作用。
接下来我尝试了这个。
xaml文件
<RiaControls:DomainDataSource x:Name="MyData" LoadSize="20" QueryName="GetStockByCompany" AutoLoad="True" LoadingData="MyData_LoadingData">cs文件
private void MyData_LoadingData(object sender, LoadingDataEventArgs e)
{
this.MyData.QueryParameters.Add(new Parameter { ParameterName = "userID", Value = RiaContext.Current.User.Name});
}不幸的是,该事件从未触发。我不知道为什么。
我甚至尝试过这个: xaml文件
<RiaControls:DomainDataSource x:Name="MyData" LoadSize="20" QueryName="GetStockByCompany" AutoLoad="True" LoadedData="MyData_LoadedData">cs文件
private void MyData_LoadedData(object sender, LoadedDataEventArgs e)
{
this.MyData.QueryParameters.Add(new Parameter { ParameterName = "userID", Value = RiaContext.Current.User.Name});
}但那太愚蠢了。
我不知所措。在页面加载时,如何使用参数加载此查询?
谢谢!
发布于 2009-11-11 04:39:14
嗯,我对你的问题没有明确的答案,但我可能知道一种完全避免这种情况的方法。
我注意到你有一个名为"GetStockByCompany“的方法,它接受当前登录的用户作为参数……
您可以完全消除对该参数的需要,而是在服务器端查询"GetStockByCompany“时,在"Where”部分中使用以下内容:
this.ServiceContext.User.Identity.Name
Ex -获取当前登录用户的所有相册:
album = this.Context.AlbumSet
.Where(n => n.AlbumId == AlbumId)
.Where(n => n.aspnet_Users.UserName == this.ServiceContext.User.Identity.Name)
.First();发布于 2013-01-24 01:46:34
绑定查询参数是有效的,典型的用法是将它直接绑定到控件。
若要在后台代码中设置该参数,请为该参数指定一个名称并设置value属性。不需要在后面的代码中添加整个参数。
https://stackoverflow.com/questions/1710897
复制相似问题