首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DomainDataSource查询参数的数据绑定

DomainDataSource查询参数的数据绑定
EN

Stack Overflow用户
提问于 2009-11-11 04:17:38
回答 2查看 4.3K关注 0票数 1

我需要将用户名绑定到DomainDataSource QueryParameter。我的理解是,以下是不起作用的:

代码语言:javascript
复制
<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#代码隐藏部分,但我不确定要将其放入哪个事件中。

到目前为止,我已经尝试过了:

代码语言:javascript
复制
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文件

代码语言:javascript
复制
<RiaControls:DomainDataSource x:Name="MyData" LoadSize="20" QueryName="GetStockByCompany" AutoLoad="True" LoadingData="MyData_LoadingData">

cs文件

代码语言:javascript
复制
private void MyData_LoadingData(object sender, LoadingDataEventArgs e)
{
   this.MyData.QueryParameters.Add(new Parameter { ParameterName = "userID", Value = RiaContext.Current.User.Name});
}

不幸的是,该事件从未触发。我不知道为什么。

我甚至尝试过这个: xaml文件

代码语言:javascript
复制
<RiaControls:DomainDataSource x:Name="MyData" LoadSize="20" QueryName="GetStockByCompany" AutoLoad="True" LoadedData="MyData_LoadedData">

cs文件

代码语言:javascript
复制
private void MyData_LoadedData(object sender, LoadedDataEventArgs e)
{
   this.MyData.QueryParameters.Add(new Parameter { ParameterName = "userID", Value = RiaContext.Current.User.Name});
}

但那太愚蠢了。

我不知所措。在页面加载时,如何使用参数加载此查询?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-11 04:39:14

嗯,我对你的问题没有明确的答案,但我可能知道一种完全避免这种情况的方法。

我注意到你有一个名为"GetStockByCompany“的方法,它接受当前登录的用户作为参数……

您可以完全消除对该参数的需要,而是在服务器端查询"GetStockByCompany“时,在"Where”部分中使用以下内容:

this.ServiceContext.User.Identity.Name

Ex -获取当前登录用户的所有相册:

代码语言:javascript
复制
album = this.Context.AlbumSet
            .Where(n => n.AlbumId == AlbumId)
            .Where(n => n.aspnet_Users.UserName == this.ServiceContext.User.Identity.Name)
            .First();
票数 3
EN

Stack Overflow用户

发布于 2013-01-24 01:46:34

绑定查询参数是有效的,典型的用法是将它直接绑定到控件。

若要在后台代码中设置该参数,请为该参数指定一个名称并设置value属性。不需要在后面的代码中添加整个参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1710897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档