silverlight RadGridView总结二(转载)
实现RadGridView行中添加不同控件,并在控件中绑定不同的数据源
先上一段前台代码
View Code
<telerik:RadGridView Grid.Row="2" x:Name="activitiesGrid1"
AutoGenerateColumns="False" GridLinesVisibility="None" Visibility="Collapsed"
UseLayoutRounding="False" IsReadOnly="True"
RowHeight="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SelectionMode="Single"
HorizontalGridLinesBrush="Transparent" VerticalGridLinesBrush="Transparent"
Background="{x:Null}" BorderBrush="{x:Null}"
IsFilteringAllowed="False" RowIndicatorVisibility="Collapsed"
CanUserFreezeColumns="False" ShowGroupPanel="False"
HeaderRowStyle="{StaticResource SalesInfoGridViewHeaderRowStyle}"
GroupRowStyle="{StaticResource SalesInfoGridViewGroupRowStyle}"
RowStyle="{StaticResource SalesInfoGridViewRowStyle}"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto" Height="200">
<telerik:RadGridView.Columns>
<telerik:GridViewColumn Header="归属营业厅ID" Width="*" IsVisible="False">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ROOM_ID}" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
<telerik:GridViewColumn Header="归属县ID" Width="*" IsVisible="False">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding TOWN_ID}" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
<telerik:GridViewColumn Header="归属营业厅名称" Width="*">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ROOM_NAME}" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
<telerik:GridViewColumn Header="归属县名称" Width="*">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding COUNTY_NAME}" FontSize="14" Width="100"/>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
<telerik:GridViewColumn Header="归属营业厅类型" Width="*">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadComboBox EmptyText="{Binding ROOM_TYPE}" Width="100" FontSize="14" Text="{Binding ROOM_TYPE}"
HorizontalAlignment="Left" Style="{StaticResource RadComboBoxStyle1}" >
<telerik:RadComboBoxItem Content="形象厅" Style="{StaticResource RadComboBoxItemStyle1}" />
<telerik:RadComboBoxItem Content="市县营业厅" Style="{StaticResource RadComboBoxItemStyle1}"/>
<telerik:RadComboBoxItem Content="乡镇营业厅" Style="{StaticResource RadComboBoxItemStyle1}"/>
</telerik:RadComboBox>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
<telerik:GridViewColumn Header="创建时间" Width="*">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding CREATETIME}" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
<telerik:GridViewColumn Header="状态" Width="*">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadComboBox EmptyText="{Binding ROOM_STAT}" Text="{Binding ROOM_STAT}" Width="100" FontSize="14" HorizontalAlignment="Left" Style="{StaticResource RadComboBoxStyle1}" >
<telerik:RadComboBoxItem Content="正常" Style="{StaticResource RadComboBoxItemStyle1}" />
<telerik:RadComboBoxItem Content="异常" Style="{StaticResource RadComboBoxItemStyle1}"/>
</telerik:RadComboBox>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
<telerik:GridViewDataColumn DataMemberBinding="{Binding ROOM_DMXS}" Header="营业厅店面调节系数" Width="*" />
<telerik:GridViewColumn Header="是否3人以上营业厅" Width="*">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadComboBox EmptyText="{Binding IS_GREATERTHREE}" Text="{Binding IS_GREATERTHREE}" Width="100"
FontSize="14" HorizontalAlignment="Left" Style="{StaticResource RadComboBoxStyle1}" >
<telerik:RadComboBoxItem Content="是" Style="{StaticResource RadComboBoxItemStyle1}" />
<telerik:RadComboBoxItem Content="否" Style="{StaticResource RadComboBoxItemStyle1}"/>
</telerik:RadComboBox>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
<telerik:GridViewColumn Header="" Width="*" HeaderCellStyle="{StaticResource SalesInfoGridViewHeaderCellStyleFirst}"
CellStyle="{StaticResource SalesInfoGridViewCellStyle}">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadButton Style="{StaticResource RadButtonStyle}" Content="删除"
x:Name="ExceptXishu" Click="ExceptXishu_Click"
FontSize="12" Foreground="White"
Tag="{Binding ID}"
Height="20" Width="50"
/>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
在GridViewColumn中添加GridViewColumn.CellTemplate,并在其子节点添加DataTemplate,在其中添加你想要的控件。可以在不同的控件中设置数据源绑定。
我在给RadGridView赋值的时候是通过赋值LIST集合赋值。
例如,this.activitiesGrid.ItemsSource = e.Result.ToList();---此处指的是从服务引用中返回的数据源(大家都懂得)
若你想你的控件在展示的时候默认显示第一行,请添加如下代码:
if (this.activitiesGrid.Items.Count>0) { this.activitiesGrid.SelectedItem = activitiesGrid.Items[0]; }
在后台控制控件中某一列的显示和隐藏
声明GridViewColumn 对象,取得对象之后控制显示和隐藏
GridViewColumn column = this.activitiesGrid.Columns[第几行];
column.IsVisible = true;//显示这一列
在后台取得某一行的数据源
(在这里我用了一个技巧,在给RadGridView绑定数据源的同时,我给每一个行的数据源绑定了一个ID,是为了取得每一个行的数据源)
在RadGridView控件中,每一行我定义一个控件,例如是RadButton控件,在他的Tag属性中我绑定了这一行数据源的ID,点击事件后我将这行的ID取出,然后可以得到其数据源,前后台代码如下:
前台代码:
View Code
<telerik:GridViewColumn Header="删除" Width="*" HeaderCellStyle="{StaticResource SalesInfoGridViewHeaderCellStyleFirst}"
CellStyle="{StaticResource SalesInfoGridViewCellStyle}">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadButton Style="{StaticResource RadButtonStyle}" Content="删除"
FontSize="12" Foreground="White"
Tag="{Binding ID}"
Height="20" Width="50"
Click="RadButton_Click_2" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
后台代码:
View Code private void btDeny_Click(object sender, RoutedEventArgs e) { RadButton btn = sender as RadButton; int num = Convert.ToInt32(btn.TabIndex.ToString()); GridViewRow row=new GridViewRow(); var item = this.BackUserDetailes.Items[num];//绑定数据源的同时,给从库中返回的数据源制定了ID row=this.BackUserDetailes.ItemContainerGenerator.ContainerFromItem(item) as GridViewRow; //得到Row对象后可以将其的数据源转换成你想要的类型 想要的类型=row.DataContext as 想要的类型; }
也可以用另外一种简单的方式获得这一行的数据源
想要的类型=btn.DataContext as 想要的类型。
在后台获取行中有不同控件值的方法
取得了GridViewRow对象之后,可以取得这一行的每个单元格,即可把单元格中的控件取出。代码如下:
例如,你在这一单元格中放置的是RadComboBox控件,可以通过:RadComboBox box=row.Cells[第几个单元格].Content as RadComboBox;将RadComboBox对象取出,并进行你想要的操作。
在RadGridView中对某一列的特殊的控件赋值,通过这一列的控件中声明其Loaded事件,为这一行的特殊的控件赋值。
例如下例:
View Code
<telerik:GridViewColumn Header="给特殊列绑定单个数据" Width="*" HeaderCellStyle="{StaticResource SalesInfoGridViewHeaderCellStyleFirst}"
CellStyle="{StaticResource SalesInfoGridViewCellStyle}" >
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadComboBox EmptyText="{Binding 绑定的数据源中字段名称}" Text="{Binding 绑定的数据源中字段名称}"
FontSize="14" Width="200" HorizontalAlignment="Left"
Style="{StaticResource RadComboBoxStyle1}"
Loaded="RadComboBox_Loaded">
<telerik:RadComboBoxItem Content="{Binding 绑定的数据源中字段名称}" Tag="{Binding CHNL_ID}" Style="{StaticResource RadComboBoxItemStyle1}" />
</telerik:RadComboBox>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
其中,EmptyText="{Binding 绑定的数据源的名称}"指的是其RadComboBox在没有 默认显示第一个值时的赋予该控件的值。
后台代码如下:
View Code
private void RadComboBox_Loaded(object sender, RoutedEventArgs e)
{
RadComboBox box = sender as RadComboBox;
box.Items.Clear();
(sender as RadComboBox).DisplayMemberPath = "ROOM_NAME";
(sender as RadComboBox).Tag = this.chnlList[0].ROOM_ID;
(sender as RadComboBox).ItemsSource = 数据源名称;
box.ItemsSource = chnlList;
}
转载于:https://www.cnblogs.com/sandea/p/3289876.html
silverlight RadGridView总结二(转载)相关推荐
- SilverLight.3-Validation:二、银光验证。TheLabel、TheDescriptionViewer和TheValidationSummary...
ylbtech-SilverLight.3-DataControls_BetterDataFroms:二.银光验证.TheLabel.TheDescriptionViewer和TheValidatio ...
- 一步一步学Silverlight 2系列(34):使用Silverlight Streaming托管Silverlight应用程序_转载...
概述 Silverlight Steaming 是微软 Live 平台中的免费发布视频以及托管 Silverlight 应用的产品.今年 MIX08 大会上微软发布了 Silverlight Stre ...
- OpenI部署二——转载
2019独角兽企业重金招聘Python工程师标准>>> 在上一篇文章中讲解了Openi的demo部署方式一,接下来讲解部署方式二,也就是在Myeclipse上进行部署,步骤如下: 1 ...
- 售前工程师的成长---一个老员工的经验之谈(二)(转载)
一. 守时是个好习惯,迟到永远是无道理的 守时是个好的个人习惯,有时能体现一个人待人接物的风格.记不得哪个名人说的"不尊重时间,就是在浪费生命".作为售前技 ...
- 慕容垂:百万战骨风云里——激荡的鲜卑史略之二(转载)
[胡歌胡会,慷慨悲壮,往往激动人的热血.百来年后,另一位鲜卑枭雄高欢, 临终仍在苦战.战局不利,生命也所剩无几,高欢却在军帐中开了最后一次胡 会,让人留下"风吹草低见牛羊"的胡歌名 ...
- Fiddler实战深入研究(二)[转载]
Fiddler实战深入研究(二) 阅读目录 Fiddler不能捕获chrome的session的设置 理解数据包统计 请求重定向(AutoResponder) Composer选项卡 Filters选 ...
- struts2+spring3+hibernate3整合(二)转载
3. 配置spring3.0.2 结合 hibernate3.3 3.1 导入hibernate3.3的包 在这里,由于我用的是myeclipse8.5,所以我是采用IDE自动导入的方法.我懒.途中的 ...
- 新手silverlight练习--五子棋( 二 )
2019独角兽企业重金招聘Python工程师标准>>> 新一天又开始了,继续上次的话题,讲到哪里了呢:? (这都忘记了,先拍一板砖)... 嘿嘿,想起来了,上次讲到把棋盘做好了. ...
- AT指令(中文详解版)二 [转载]
常 用 AT 命 令 手 册 1.常用操作 1.1 AT 命令解释:检测 Module 与串口是否连通,能否接收 AT 命令: 命令格式:AT 命令返回:OK (与串口通信正常) ...
最新文章
- 伍六七带你学算法 入门篇-最长回文串
- 原创 | 比新基建还火,数字孪生究竟有哪些应用价值?
- mac怎么用python3.0_怎么在mac中使用python
- 使用python编写单元测试
- Windows Phone 7 自定义控件库
- sklearn 笔记:数据归一化(StandardScaler)
- 紫书 程序 3-3 蛇形填数
- php zpo框架,Yii使用DeleteAll连表删除出现报错问题的解决方法
- java 上传 进度条_Ajax上传文件并显示进度条
- Firefox、Chrome 盘助手
- 上海美特斯邦威成被执行人 执行标的超79万
- 【Elasticsearch】elasticsearch里面的关于批量读取mget的用法
- STM32工作笔记0098---Windows下的Linux环境_Cygwin_MinGW_MSYS_MSYS2_之间的关系
- 【Win 10应用开发】提供建议列表的输入控件(AutoSuggestBox)
- Windows 驱动开发 之 WinDbg调试(一)
- 中国将取代德国成世界第三大经济体
- google earth engine随缘学习(十一)影像分割
- Omnipeek空口抓包(3):过滤器的设置和使用
- 黑客泄露微软XP系统源代码,就连比尔盖茨的私密文件也难逃一劫
- 结对作业——WordCount进阶版