我有一个主网格,用于查找项目,然后是一组3个网格,使用简单的名称值对显示所选行的相关详细信息的并行集合。
当我断开域服务时,所选行的参数会正确传递给它,但子网格显示的条目与返回的数据无关。
public IEnumerable<NameValuePair> GetRandNameValues(int randId)
{
// If I breakpoint here the values in randId are
// correct for the selected master row
List<NameValuePair> result = new List<NameValuePair>();
result.Add(new NameValuePair("[ID]", randId.ToString()));
...
return result;
}
<telerik:RadGridView Grid.Row="1" Grid.Column="2" HorizontalAlignment="Stretch" Name="randGridView" VerticalAlignment="Stretch" ShowGroupPanel="False" RowIndicatorVisibility="Collapsed"
ItemsSource="{Binding ElementName=randDataSource, Path=Data}" AutoGenerateColumns="False">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="Name" DataMemberBinding="{Binding Name}" IsReadOnly="True" Width="*" />
<telerik:GridViewDataColumn Header="Value" DataMemberBinding="{Binding Value}" IsReadOnly="True" Width="*" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
<riaControls:DomainDataSource Name="randDataSource" Height="0" Width="0"
QueryName="GetRandNameValuesQuery">
<riaControls:DomainDataSource.DomainContext>
<my:RandDomainContext />
</riaControls:DomainDataSource.DomainContext>
<riaControls:DomainDataSource.QueryParameters>
<riaControls:Parameter ParameterName="randId"
Value="{Binding ElementName=masterGridView, Path=SelectedItem.Rand_ID}"/>
</riaControls:DomainDataSource.QueryParameters>
</riaControls:DomainDataSource>
在这个测试用例中,哪个应返回传递的键值,但它总是显示0的值,如下所示:
0来自最初没有选择任何内容的情况。细节网格中的其他行会更改,但不会更改为正确的记录。事实上,他们似乎在一小部分与一些主行相关的值之间交替......很奇怪。
使用正确的密钥在正确的时间调用DomainService,但返回值是错误的。
我为数据源上的LoadedData
事件添加了一个处理程序,并在我断点时查找其中的实体是错误的值...即不是域服务选择的内容:
private void randDataSource_LoadedData(object sender, LoadedDataEventArgs e)
{
if (e.HasError)
{
System.Windows.MessageBox.Show(e.Error.ToString(), "Rand Load Error", System.Windows.MessageBoxButton.OK);
e.MarkErrorAsHandled();
}
}
当我将交叉绑定替换为网格选择时,如上所示,在3个单独的域上下文中进行3次单独的加载调用,它可以正常工作。问题似乎是将DomainDataSource参数绑定到Grid上的选择更改。
有什么想法吗?