silverlight RadGridView总结二(转载)
实现RadGridView行中添加不同控件,并在控件中绑定不同的数据源
先上一段前台代码
<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>)
{
this.activitiesGrid.SelectedItem = activitiesGrid.Items[];
}
在后台控制控件中某一列的显示和隐藏
声明GridViewColumn 对象,取得对象之后控制显示和隐藏
GridViewColumn column = this.activitiesGrid.Columns[第几行];
column.IsVisible = true;//显示这一列
在后台取得某一行的数据源
(在这里我用了一个技巧,在给RadGridView绑定数据源的同时,我给每一个行的数据源绑定了一个ID,是为了取得每一个行的数据源)
在RadGridView控件中,每一行我定义一个控件,例如是RadButton控件,在他的Tag属性中我绑定了这一行数据源的ID,点击事件后我将这行的ID取出,然后可以得到其数据源,前后台代码如下:
前台代码:
<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>
后台代码:
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事件,为这一行的特殊的控件赋值。
例如下例:
<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在没有 默认显示第一个值时的赋予该控件的值。
后台代码如下:
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;
}
silverlight RadGridView总结二(转载)的更多相关文章
- silverlight RadGridView总结三(转载)
在RadGridView中进行分组以及导出 分组 主要是在前台进行分组的定义: 前台代码: <telerik:RadGridView x:Name="RadGridView1" ...
- silverlight RadGridView总结系列(转载)
系列一. RadGridView常用属性总结 1.不可编辑----IsReadOnly="True". 2.不自动增加行----AutoGenerateColumns= ...
- SilverlightOA源代码(可用于企业级Silverlight项目的二次开发,长年有效)
Silverlight OA系统简介 系统功能简介 l 程序界面介绍: 左侧为主菜单,主菜单可以展开和收起,主菜单下面的所有模块都可以在数据库中扩展增加,模块的权限和用户角色挂钩,可以在数据库中创建多 ...
- SilverLight.3-Validation:二、银光验证。TheLabel、TheDescriptionViewer和TheValidationSummary
ylbtech-SilverLight.3-DataControls_BetterDataFroms:二.银光验证.TheLabel.TheDescriptionViewer和TheValidatio ...
- Silverlight RadGridView的HeaderCellStyle样式
效果图 <UserControl x:Class="SilverlightApplication7.MainPage" xmlns="http://schemas. ...
- PCB优化设计(二) 转载
PCB优化设计(二) 2011-04-25 11:41:05| 分类: PCB设计 目 前SMT技术已经非常成熟,并在电子产品上广泛应用,因此,电子产品设计师有必要了解SMT技术的常识和可制造性 ...
- Silverlight学习(二)
好久没来写博客了,这期间经历了春节,也因为忙于一个项目,所以博客被疏忽了.最近一段时间一直在用silverlight做项目,从来一开始的不熟悉渐渐的开始上手.今天记录一下自己学习prism的一些sam ...
- Fiddler实战深入研究(二)[转载]
Fiddler实战深入研究(二) 阅读目录 Fiddler不能捕获chrome的session的设置 理解数据包统计 请求重定向(AutoResponder) Composer选项卡 Filters选 ...
- Spring WebSocket入门(二) 转载
本文转载自:http://www.jianshu.com/p/8500ad65eb50 WebSocket前端准备 前端我们需要用到两个js文件:sockjs.js和stomp.js SockJS:S ...
随机推荐
- UVALive 5097 Cross the Wall
贪心思想,$dp$,斜率优化. 首先将人按照$w$从大到小排序,如果$w$一样,按$h$从大到小排.这样一来,某位置之后,比该位置$h$小的都是不需要考虑的. 因此,形成了如下图所示的结果: 即第一个 ...
- python判断一个数是否是2的几次幂
判断一个数是不是2的几次幂,最简单粗暴的做法就是直接迭代除以2,这里有一个更好的方法,那就是采用位运算. 我们观察下面属于2的几次幂的数的变化规律,用2进制表示. 十进制 二进制 0 0 2 10 4 ...
- 火柴棒等式c++
先建立一个sum数组,打表存入1—9每个数字需要的火柴棒数,然后手动二重循环0—1000的所有数字,写一个int型函数用来计算每个数字需要多少根火柴棒(当前数字%10后在sum数组的下标),然后,最后 ...
- Codeforces 856B - Similar Words
856B - Similar Words 题意 如果一个字符串可以通过去掉首位字母得到另一个字符串,则称两个字符串相似. 给出一个字符串集合,求一个新的字符串集合,满足新集合里的字符串是原字符串集合中 ...
- HDUOJ题目HTML的爬取
HDUOJ题目HTML的爬取 封装好的exe/app的GitHub地址:https://github.com/Rhythmicc/HDUHTML 按照系统选择即可. 其实没什么难度,先爬下来一个题目的 ...
- LoadRunner系列之---web_set_sockets_options,解决No buffer space available错误
1. 如果在系统运行过程中出现"No buffer space available"或者出现大量连接出现wait的时候, 如何解决? 解决办法: 保证迭代结束后关闭所有的链接: 在 ...
- java.lang.ClassCastException: com.sun.proxy.$Proxy13 cannot be cast to sm.dao.UserDao
在Spring中添加事物管理以后出现的问题 源代码 ApplicationContext applicationContext = new ClassPathXmlApplicationContext ...
- 找出分数最高的前两个学生 Exercise05_09
import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:找出分数最高的前两个学生 * */ public class Exerci ...
- yii2.0权限控制 ACF权限
ACF是一种通过yii\filters\AccessControl类来实现的简单授权 有两种角色 ?:未经认证的游客用户 @:已认证的用户 ACF可同过对角色设置权限控制访问 1)记得引入yii\fi ...
- [OpenJudge8782][划分DP]乘积最大
乘积最大 总时间限制: 1000ms 内存限制: 65536kB [描述] 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛, ...