Silverlight 自动编号

kingdom_0 2011-11-22 08:49:16
问题:
1.DataGrid中,用到了分页。在页面当中,如何实现数据的自动编号(注:自动编号的数字要能够实现不同页的联动)。
2.DataGrid中定义了一个CheckBox模板列,实现全选,全取消(注:在列头中增加CheckBox,不能用Canvas定位).
...全文
116 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingdom_0 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wwwxhb 的回复:]

///希望对您有帮助
全选的代码估计您已经不是问题,我们以前实现是定义了一个
private List<int> _selectList;
不一定是int,我只是举个例子,把你的唯一标示符存里面。
/////全选(全消)
private void RefreshShow(object sender, System.Windows.RoutedEventArgs e)
……
[/Quote]
感谢如此用心,分数都给你,鼓励下你。
wwwxhb 2011-11-24
  • 打赏
  • 举报
回复
///希望对您有帮助
全选的代码估计您已经不是问题,我们以前实现是定义了一个
private List<int> _selectList;
不一定是int,我只是举个例子,把你的唯一标示符存里面。
/////全选(全消)
private void RefreshShow(object sender, System.Windows.RoutedEventArgs e)
{
CheckBox quxuan = (CheckBox)sender;
if (dataGrid.ItemsSource != null)
{
foreach (var obj in dataGrid.ItemsSource)
{
////这里可以selectList添加唯一标示符
//.......
//////////

///界面上修改
var col = dataGrid_zjzq.Columns[0].GetCellContent(obj);
if (col != null)
{
CheckBox cb1 = dataGrid_zjzq.Columns[0].GetCellContent(obj).FindName("ck") as CheckBox;
var id = (int)cb1.Tag;
cb1.IsChecked = quxuan.IsChecked;
}
}
}
}

/////勾选某项,或取消某项的用法
//选中
private void ck_Checked(object sender, RoutedEventArgs e)
{
var ck = (CheckBox)sender;
var id = (int)ck.Tag;
if (!_selectList.Contains(id))
{
_selectList.Add(id);
}
}

//取消
private void ck_Unchecked(object sender, RoutedEventArgs e)
{
var ck = (CheckBox)sender;
var id = (int)ck.Tag;
if (_selectList.Contains(id))
{
_selectList.Remove(id);
}
}


///全选界面用法例子也给你:
<sdk:DataGridTemplateColumn.HeaderStyle>
<Style TargetType="sdk:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<CheckBox x:Name="cbSelectAll" Margin="10,2,0,0" Click="RefreshShow"></CheckBox>
<TextBlock Text="全选"/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</sdk:DataGridTemplateColumn.HeaderStyle>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<CheckBox x:Name="ck" Tag="{Binding ID}" IsChecked="{Binding IsCheck,Mode=TwoWay}" Checked="ck_Checked" Unchecked="ck_Unchecked"></CheckBox>
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
kingdom_0 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bushiyundeyu 的回复:]

在使用MVVM模式下:
1.增加一个数据源的属性为Id,然后该Id为程序设置的自增1数字,绑定到DataGrid第一列即可。
2.在绑定的CheckBox控件IsChecked属性绑定一个Bool值,当要实现全选的时候,循环设置所有数据源实体的Bool值为True即可全选。

在非MVVM模式下也类似。
[/Quote]
1.这样的Id不是连续的,你的方法不可行。
2.我要实现在列标题头上加一个CheckBox,你说的也不可取。
继续求解。
Architecture Net 2011-11-23
  • 打赏
  • 举报
回复
在使用MVVM模式下:
1.增加一个数据源的属性为Id,然后该Id为程序设置的自增1数字,绑定到DataGrid第一列即可。
2.在绑定的CheckBox控件IsChecked属性绑定一个Bool值,当要实现全选的时候,循环设置所有数据源实体的Bool值为True即可全选。

在非MVVM模式下也类似。
kingdom_0 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zxh198841 的回复:]

第二个循环一下就行了
[/Quote]
2.DataGrid中定义了一个CheckBox模板列,实现全选,全取消(注:在列头中增加CheckBox,不能用Canvas定位
kingdom_0 2011-11-23
  • 打赏
  • 举报
回复
人呢 ?
zxh198841 2011-11-23
  • 打赏
  • 举报
回复
第二个循环一下就行了

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧