2009-11-10 43 views
1

我需要將用戶名綁定到DomainDataSource QueryParameter。我的理解是,以下不工作:將數據綁定到DomainDataSource查詢參數

<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()觸發第一和loades數據,這將導致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}); 
} 

但那只是愚蠢。

我不知所措。如何在頁面加載時使用參數加載此查詢?

謝謝!

回答

3

嗯我不是你的問題的具體答案,但我可能知道一種方法來完全避免這種情況。

我注意到你有一個名爲「GetStockByCompany」接受用戶作爲參數當前登錄的方法...

可以徹底刪除了參數,而不是在你的服務器端查詢「GetStockByCompany需要其中,‘部分「,在您使用本’:

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(); 
+0

輝煌! 你是個天才。 謝謝! – Joe 2009-11-10 20:59:58

0

綁定查詢參數的工作原理,典型的用法是將其直接綁定到控件。

要在後面的代碼中設置參數,給參數一個名稱並設置value屬性。沒有必要在後面的代碼中添加整個參數。