WPF中为ListView动态绑定数据且添加一列复选框
2011-09-15 20:06
561 查看
GetGridViewByFieldManage(ResourceDictionary resources, string moduleName, int groupID) { GridView gv = new GridView(); DataTable dt = fieldManageBLL.GetFieldManage(moduleName); for(int i=0;i<dt.Rows.Count;i++) { if(i==0) { GridViewColumn gvc=new GridViewColumn(); CheckBox cb = new CheckBox(); cb.Checked += new RoutedEventHandler(cb_Checked); cb.Unchecked += new RoutedEventHandler(cb_Unchecked); TextBlock tb = new TextBlock(); tb.Text = "全选"; cb.Content = tb; _gvc.Header = cb; _gvc.Width = 100; _gvc.CellTemplate = (DataTemplate)resources["TheCheckBox"]; gv.Columns.Add(_gvc); continue; } gvc.DisplayMemberBinding = new Binding(dt.Rows[i]["FieldManage_Field"].ToString()); } return gv; } //其中:dt.Rows[i]["FieldManage_Field"].ToString();分别对应以下DataTemplate中的x:Key的值。 //至于DisplayMemberBinding我才接触几天,目前的理解是只显示数据没有其它效果;而CellTemplate则可以在显示的数据上加上控件的效果,比如CheckBox、Hyperlink等 //XAML代码: <Window.Resources> <!-- 复选框 --> <DataTemplate x:Key="TheCheckBox"> <TextBlock VerticalAlignment="Center"> <CheckBox Name="ckb_SelectAll" Click="ckb_SelectAll_Click" Margin="6 0 0 0"> <!--<TextBlock Foreground="White">全选</TextBlock>--> </CheckBox> </TextBlock> </DataTemplate> <!-- 序号 --> <DataTemplate x:Key="TheIndex"> <TextBlock Width="100" Text="{Binding Path=TheIndex}" Style="{StaticResource NormalTextBlockStyle}" TextAlignment="Center"></TextBlock> </DataTemplate> <!--单据号--> <DataTemplate x:Key="StoBill_No"> <TextBlock Width="150" Text="{Binding Path=StoBill_No}" Tag="{Binding Path=StoBill_ID}" Style="{StaticResource NormalTextBlockStyle}" TextAlignment="Right" Padding="0,0,20,0"></TextBlock> </DataTemplate> <!--单据类型--> <DataTemplate x:Key="StoBillsType_Name"> <TextBlock Width="100" Text="{Binding Path=StoBillsType_Name }" Style="{StaticResource NormalTextBlockStyle}" TextAlignment="Center"></TextBlock> </DataTemplate> <!--时间--> <DataTemplate x:Key="StoBill_OperationDate"> <TextBlock Width="150" Text="{Binding Path=StoBill_OperationDate,StringFormat='{}{0:yyyy-MM-dd HH:mm}'}" Style="{StaticResource NormalTextBlockStyle}" TextAlignment="Left"></TextBlock> </DataTemplate> <!--应付--> <DataTemplate x:Key="StoBill_NotPaid"> <TextBlock Width="100" Text="{Binding Path=StoBill_NotPaid,StringFormat='N'}" Style="{StaticResource NormalTextBlockStyle}" TextAlignment="Right" Padding="0,0,20,0"></TextBlock> </DataTemplate> <!--单据明细--> <DataTemplate x:Key="DanjuDetail"> <TextBlock TextAlignment="Center" Width="100" > <Hyperlink Name="hpl_DanjuDetailListView" Tag="{Binding StoBill_ID}" Click="hpl_DanjuDetailListView_Click"> <TextBlock x:Name="tbl_DanjuDetail" Text="单据明细" /> </Hyperlink> </TextBlock> </DataTemplate> <!--结算明细--> <DataTemplate x:Key="JieSuanDetail"> <TextBlock TextAlignment="Center" Width="100" > <Hyperlink Name="hpl_JieSuanDetailListView" Tag="{Binding StoBill_ID}" Click="hpl_JieSuanDetailListView_Click"> <TextBlock x:Name="tbl_DanjuDetail" Text="结算明细" /> </Hyperlink> </TextBlock> </DataTemplate> </Window.Resources>
此ListView的ItemsSource就是一个DataTable,不过填充过DataTable后要在此DataTable中再添加一列DataColumn,如下:
SupplierDt.Columns.Add(new DataColumn("TheCheckBox",typeof(CheckBox)));这样动态绑定代码就出来了(假设上面的方法签名为:GetGridViewByFieldManage(ResourceDictionary resources, string moduleName, int groupID)):如下:
GridView gv = GetGridViewByFieldManage(this.Resources, "供应商清账", MainRoomModel.StaffRightGroupID); Ltv_ClearignAccount.View = gv; Ltv_ClearignAccount.ItemsSource = dt.DefaultView;其实这个方法的三个参数只用到了第一个参数,后面两个都是根据实际应用添加的。
相关文章推荐
- WPF Datagrid Header数据绑定,表头复选框实现全选、全否、部分选中,根据条目动态变化
- WPF中在listview进行数据绑定,根据绑定数据调整一列的显示
- ASP.NET2.0中给GridView动态添加模板列并自动绑定数据
- treeview控件(动态数据绑定+整行选择)(WPF)(一)
- android ListView内数据的动态添加与删除
- GridView 数据绑定扩展-- 动态添加数据列,绑定方法
- android ListView内数据的动态添加与删除实例代码
- [★]ComboBox 经验总结[动态绑定数据之后,静态添加一条数据]
- WPF数据绑定(一):ListView + BindingList实现列表数据绑定
- C#中使用ListView动态添加数据不闪烁(转)
- android ListView内数据的动态添加与删除
- android开发--详解ListView,动态添加,删除Adapter中的数据项
- WPF ListView点击删除某一行并获取绑定数据
- angularjs 动态添加输入控件并绑定数据
- WPF ListView 的三种数据绑定方式
- ASP.NET2.0中给GridView动态添加模板列并自动绑定数据
- android开发--详解ListView,动态添加,删除Adapter中的数据项
- dropdownlist的动态绑定数据然后怎么添加默认项“请选择”以及如何清空成“请选择”
- C#中使用ListView动态添加数据不闪烁
- WPF中ListView小Demo的数据绑定应用