我正在使用RIA Services構建Silverlight應用程序。我想實現主/細節行爲。這裏的訣竅是「細節」網格不能直接用主網格的「SelectedItem」屬性填充,我必須做的是從主網格中獲取一個字段並將其用作參數DataService的。綁定將如何?Silverlight Databind到參數化DataService
這是參數化查詢代碼:
public Usuarios GetUserFromId(int id)
{
return this.ObjectContext.Usuarios.Where(u => u.ID == id).First();
}
而這些都是在XAML來源:
<riaControls:DomainDataSource x:Name="DomainDataSourceRaceTrackGetUsersWithRole" AutoLoad="True" QueryName="GetUsersWithRoleQuery" LoadSize="20">
<riaControls:DomainDataSource.DomainContext>
<App:DomainServiceRaceTrack></App:DomainServiceRaceTrack>
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
<riaControls:DomainDataSource x:Name="DomainDataSourceRaceTrackGetUserById" AutoLoad="True" QueryName="GetUserFromId">
<riaControls:DomainDataSource.DomainContext>
<App:DomainServiceRaceTrack></App:DomainServiceRaceTrack>
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
以下是我綁定主電網:
<data:DataGrid x:Name="DataGridUsers" AutoGenerateColumns="False" ItemsSource="{Binding Data, ElementName=DomainDataSourceRaceTrackGetUsersWithRole}">
然後在SelectedItemChanged上我需要填充Detail網格,但是我使用的綁定不起作用:
<dataControls:DataForm x:Name="dataForm1" Height="393" Width="331"
VerticalAlignment="Top"
Header="User Details"
CurrentItem="{Binding DataGridUsers.SelectedItem.Id, ElementName=DomainDataSourceRaceTrackGetUserById}"
HorizontalAlignment="Left" >
<dataControls:DataForm.EditTemplate>
任何人都知道我在做什麼錯了?我想使用XAML而不是代碼隱藏。
謝謝!
我得到一個錯誤:當AutLoad設置爲True和CanLoad設置爲False QueryParameters不能改變。有任何想法嗎?另外,在第一次加載時,我得到錯誤加載操作失敗,查詢'GetUserFromId'。序列不包含任何元素。 有什麼建議嗎? – brafales 2010-02-01 10:40:23
我認爲你在我們的PDC版本中遇到了一些限制,造成了一些令人頭痛的問題。當一個現有的負載正在等待時,我們正在阻止負載,並且這種情況非常頻繁。 該行爲將在我們的下一個版本中得到解決,以便在調用新的加載時,掛起的加載將被取消。 與此同時,您可能必須關閉子數據DomainDataSource的自動加載,偵聽主網格上的SelectionChange事件,取消子數據上的任何掛起的加載並調用新的加載。 – 2010-02-03 07:47:27
好的,我會試試看。 感謝這兩個答案! – brafales 2010-02-03 21:25:30