1

ユーザー名を 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});
}

しかし、それはただばかだった。

私は途方に暮れています。ページの読み込み時に、パラメーターを使用してこのクエリを読み込むにはどうすればよいですか?

ありがとう!

4

2 に答える 2

3

うーん、私はあなたの問題に対する具体的な答えではありませんが、状況を完全に回避する方法を知っているかもしれません。

現在ログインしているユーザーをパラメータとして受け入れる「GetStockByCompany」という名前のメソッドがあることに気づきました...

パラメータの必要性を完全に削除し、代わりに「GetStockByCompany」のサーバー側クエリで「Where」部分でこれを使用できます。

this.ServiceContext.User.Identity.Name

例-現在ログインしているユーザーのすべてのアルバムを取得する:

album = this.Context.AlbumSet
            .Where(n => n.AlbumId == AlbumId)
            .Where(n => n.aspnet_Users.UserName == this.ServiceContext.User.Identity.Name)
            .First();
于 2009-11-10T20:39:14.277 に答える
0

クエリ パラメーターのバインドは機能します。一般的な使用法は、コントロールに直接バインドすることです。

コード ビハインドでパラメーターを設定するには、パラメーターに名前を付けて、value プロパティを設定します。コード ビハインドにパラメーター全体を追加する必要はありません。

于 2013-01-23T17:46:34.000 に答える