SilverLight 的新手并在此处发布。请怜悯并具体:)
使用带有 DomainDataSource 和 DataGrid 控件的 RIA 服务来显示来自 SQL 服务器查询的数据行
目标: 具有复选框列(仅 UI - 不是数据字段)以允许用户选择多个记录/行
背景:
1) 使用 RIA 服务创建了新的 SilverLight 4、C# 解决方案
2) 在 ProjectName.Web 中
- 创建引用 SQL 服务器表/视图的实体框架 (EF) 模型(构建的解决方案)。
- 使用 EF 模型创建域服务(构建的解决方案)。
3) 在 SilverLightProjectName
- 从 Data Sources 窗口,将表格拖到设计图面上以创建 DomainDataSource 和 DataGrid(这非常适合将 DataGrid 绑定到数据源)
4) 在 MainPage.XAML 添加复选框列
发生了什么: 复选框被用户选中/选中,向下滚动,向上滚动,所有复选框重置并且只有 Datagrid.SelectedItem 仍然被选中。由于分页,我已阅读此行为是“设计使然”。
<sdk:DataGrid RowStyle="{StaticResource newDataGridStyle}" AutoGenerateColumns="False" ItemsSource="{Binding ElementName=ddsPagerApp, Path=Data}" Name="vwPagerAppDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" MouseLeftButtonDown="vwPagerAppDataGrid_MouseLeftButtonDown" VerticalGridLinesBrush="#FFB9B9B9" FontSize="10" Grid.Row="3" SelectionChanged="vwPagerAppDataGrid_SelectionChanged" KeyDown="vwPagerAppDataGrid_KeyDown" MouseLeftButtonUp="vwPagerAppDataGrid_MouseLeftButtonUp" MouseRightButtonUp="vwPagerAppDataGrid_MouseRightButtonUp" DataContext="{Binding}" SelectionMode="Single" IsEnabled="True" IsReadOnly="False" TabIndex="2" Grid.Column="1" Margin="0,10,9,9">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn IsReadOnly="False">
<sdk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<CheckBox Name="ChkSelected" IsThreeState="False" IsChecked="{Binding Path=IsChecked, Mode=TwoWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Unchecked="IndividualCheckBox_Unchecked" Checked="IndividualCheckBox_Checked" Width="Auto" Height="Auto" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellEditingTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTextColumn x:Name="fullNameColumn" Binding="{Binding Path=FullName}" Header="Full Name" IsReadOnly="True" />
<sdk:DataGridTextColumn x:Name="departmentColumn" Binding="{Binding Path=department}" Header="Department" IsReadOnly="True" />
<sdk:DataGridTextColumn x:Name="pager_number_displayColumn" Binding="{Binding Path=pager_number_display}" Header="Pager Number" IsReadOnly="True" />
<sdk:DataGridTextColumn x:Name="PageTo" Binding="{Binding Path=PageTo}" Header="Page To" IsReadOnly="True" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my:vwPagerApp, CreateList=true}" Height="0" LoadedData="ddsPagerApp_LoadedData" Name="ddsPagerApp" QueryName="GetVwPagerAppsQuery" Width="0" Margin="10,0,25,45" Background="#FF7D0000" Foreground="#FF7D0000" Visibility="Visible">
<riaControls:DomainDataSource.DomainContext>
<my:NotifyDomainContext />
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
尝试1:
- 在 EFModel.edmx 中,添加了布尔标量属性“IsChecked”
- 在 DomainService.metadata.cs 中,添加了 public bool IsChecked { get; 放; }
- 在 MainPage.XAML 中。添加(上) IsChecked="{Binding Path=IsChecked, Mode=TwoWay}"
出现错误:错误 11009:未映射属性“”
更新:反向尝试1:
尝试 2:
研究为实体定义部分类、连接到 DataGrid 并使用它来跟踪 CheckBox 值的可能性。 关于这是否可行/如何可行的任何建议?
尽我所能吸收这一点。请赐教......并提前谢谢你:)