• Silverlight Telerik RadGridView动态增删行及行列操作(转载)


    最近使用一直使用第三方控件Telerik,版本 2011 Q1,一直使用显示控件RadGridView,使用起来比DataGird好使,

         也发现有控件问题。

    1 ///增加行
    2 radgridview.BeginInsert();

        或

        使用ShowInsertRow=true;

    1 radgridview.ShowInsertRow=true;

           2.删行

              RadGridView中也提供删除行方法,这个需要使用Teleri中的命令telerik:RadGridViewCommands.Delete

        同时设置CommandParameter对行绑定

    <telerik:GridViewColumn Header="Delete" >
            <telerik:GridViewColumn.CellTemplate>
                <DataTemplate>
                    <telerik:RadButton Content="Delete"
                         Command="telerik:RadGridViewCommands.Delete"
                                        CommandParameter="{Binding}" />
                </DataTemplate>
            </telerik:GridViewColumn.CellTemplate>
        </telerik:GridViewColumn>


    如图:

              写成如下方式也与上面效果一样:

    <telerik:GridViewColumn Header="Delete" >
            <telerik:GridViewColumn.CellTemplate>
                <DataTemplate>
                    <telerik:RadButton Content="Delete"
                                             ///调用方法
                                             Click="DelRow_Click" />
                </DataTemplate>
            </telerik:GridViewColumn.CellTemplate>
        </telerik:GridViewColumn>

    1 privatevoid DelRow_Click(object sender, RoutedEventArgs e)
    2 {
    3 var deletecommand = RadGridViewCommands.Delete as RoutedUICommand;
    4 deletecommand.Execute(radgridview.CurrentItem, radgridview);
    5 }
    RadGridViewCommands命令还有很多,有时间可以看下

        3.行数据获取

                 使用这控件中,发现取数据不像Datagrid那样获取,开始也无法理解,仔细看下文档,获取方式还真不同。

                 将RadGridView.Items中每项Item转换为GridRowView的,在获取GridRowView中的每列

                使用RadGridView.ItemContainerGenerator.ContainerFromItem()方法

    foreach (var item in radgridview.Items)
     {
          GridViewRow row = radgridview.ItemContainerGenerator.ContainerFromItem(item) as GridViewRow;
          int level=Convert.ToInt32((row.Cells[0].Content as TextBox).Text);
          double min=Convert.ToDouble((row.Cells[1].Content as TextBox).Text);
          double max=Convert.ToDouble((row.Cells[2].Content as TextBox).Text);
          Color c=(row.Cells[3].Content as RadColorPicker).SelectedColor;
                      ......
     }

    4.设置新行的默认初始值

               通过 BeginInsert()方法增加新行,需要设置每行每列的初始值,需要在RowLoaded方法中写方法

        RadGrid_RowLoaded(object sender, Telerik.Windows.Controls.GridView.RowLoadedEventArgs e)

    private void radgridview_RowLoaded(object sender, Telerik.Windows.Controls.GridView.RowLoadedEventArgs e)
     {
                    ///是标题栏返回
                 if (e.Row is GridViewHeaderRow)
                     return;
     
                 int rownumber=(sender as RadGridView).Items.Count;
     
                 ///设置每列初始值
                 (e.Row.Cells[0].Content as TextBox).Text = rownumber.ToString();
                 ///颜色随机
                 Random rand = new Random();
                 byte r = Convert.ToByte(rand.Next(255));
                 byte g= Convert.ToByte(rand.Next(255));
                 byte b= Convert.ToByte(rand.Next(255));
                 (e.Row.Cells[3].Content as RadColorPicker).SelectedColor = Color.FromArgb(180,r,g,b);
     }

    
    
  • 相关阅读:
    Windows 7 Phone 文档数据库Rapid Repository正式发布
    Adobe展示HTML5动画制作IDE
    详解Android实现全屏正确方法
    qtform.com计划
    Adobe加速布局移动开发:Flash Builder+Flex+AIR+Catalyst
    预览:Visual Basic与C#中的异步语法
    Windows 7主题中的壁纸从哪里来?
    F#的编译器及标准库使用Apache 2.0协议开源(暂时还没有看到未来)
    开发者谈Symbian、iPhone、Android、MeeGo平台
    MeeGo 1.1发布
  • 原文地址:https://www.cnblogs.com/sandea/p/3289873.html
Copyright © 2020-2023  润新知