应用小算法_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 应用小算法

应用小算法

 2014/9/12 16:51:28  lhb62232397  程序员俱乐部  我要评论(0)
  • 摘要:最近在做一个WPF小项目,因为需要处理一些数据,迫不得已写了一个函数,算是一个小算法吧,在此写出以便温故知新,同时希望牛人不吝赐教,点出其中不足之处。简化需求:创建一个datatable表dt,dt表中的记录行数是变量m。创建datatable表dt1、dt2,dt1和dt2循环显示dt中的数据,添加一个计时器定时刷新dt1、dt2中的数据,且dt1和dt2每次只能显示n行。1、声明变量privateDispatcherTimertimer;DataTabledt=newDataTable()
  • 标签:应用 算法

最近在做一个WPF小项目,因为需要处理一些数据,迫不得已写了一个函数,算是一个小算法吧,在此写出以便温故知新,同时希望牛人不吝赐教,点出其中不足之处。

 

简化需求:

创建一个datatable表dt,dt表中的记录行数是变量m。创建datatable表dt1、dt2,dt1和dt2循环显示dt中的数据,添加一个计时器定时刷新dt1、dt2中的数据,且dt1和dt2每次只能显示n行。

 

1、声明变量

class="code_img_closed" src="/Upload/Images/2014091216/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('4f06d13c-c51d-4131-bc22-c9bcaeca41a8',event)" src="/Upload/Images/2014091216/2B1B950FA3DF188F.gif" alt="" />
private DispatcherTimer timer;
        DataTable dt = new DataTable();
        DataTable dt1 = new DataTable();
        DataTable dt2 = new DataTable();
        public static int currentRows = 0;//当前行
        public static int currentRows2 = 0;//中间变量
View Code

定时器:

timer = new DispatcherTimer();
            timer.Interval = new TimeSpan(0, 0, 5);
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
View Code

 

2、添加控件,此处添加两个datagrid控件(用以显示dt1和dt2中的数据)

<DataGrid AutoGenerateColumns="False" Height="335" HorizontalAlignment="Left" Margin="220,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" >
            <DataGrid.Columns >
                <DataGridTextColumn Header="id" Binding="{Binding Path=id}"></DataGridTextColumn>
                <DataGridTextColumn Header="name" Binding="{Binding Path=name}"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
        <DataGrid AutoGenerateColumns="False" Height="305" HorizontalAlignment="Left" Margin="463,31,0,0" Name="dataGrid2" VerticalAlignment="Top" Width="200" >
            <DataGrid.Columns >
                <DataGridTextColumn Header="id" Binding="{Binding Path=id}"></DataGridTextColumn>
                <DataGridTextColumn Header="name" Binding="{Binding Path=name}"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
View Code

 

3、创建datatable表dt,并且初始化dt1和dt2

private void Initialize(int num)
        {
            dt.Columns.Add(new DataColumn("id", typeof(int)));
            dt.Columns.Add(new DataColumn("name", typeof(string)));
            for (int i = 0; i < num; i++)
            {
                DataRow dr = dt.NewRow();
                dr["id"] = i;
                dr["name"] = "tom" + i.ToString();
                dt.Rows.Add(dr);
            }

            dt1.Columns.Add(new DataColumn("id", typeof(int)));
            dt1.Columns.Add(new DataColumn("name", typeof(string)));

            dt2.Columns.Add(new DataColumn("id", typeof(int)));
            dt2.Columns.Add(new DataColumn("name", typeof(string)));
        }

初始化时调用:

Initialize(11);

 

4、编写函数

public void Update(int num)
        {
            int rows = dt.Rows.Count;
            int num1 = 0;
            int num2 = 0;
            currentRows = currentRows2;

            for (int i = currentRows; i < (currentRows + num); i++)
            {
                num1++;
                currentRows2++;

                DataRow dr = dt1.NewRow();
                dr["id"] = Convert.ToInt32(dt.Rows[i][0].ToString());
                dr["name"] = dt.Rows[i][1].ToString();
                dt1.Rows.Add(dr);

                if (i == rows - 1)
                {
                    i = -1;
                    currentRows2 = 0;
                }

                if (num1 == num)
                {
                    break;
                }
            }

            currentRows = currentRows2;
            for (int i = currentRows; i < (currentRows + num); i++)
            {
                num2++;
                currentRows2++;

                DataRow dr = dt2.NewRow();
                dr["id"] = Convert.ToInt32(dt.Rows[i][0].ToString());
                dr["name"] = dt.Rows[i][1].ToString();
                dt2.Rows.Add(dr);

                if (i == rows - 1)
                {
                    i = -1;
                    currentRows2 = 0;
                }

                if (num2 == num)
                {
                    break;
                }
            }
        }

 

5、定时刷新dt1和dt2中的数据

void timer_Tick(object sender, EventArgs e)
        {
            dt1.Clear();
            dt2.Clear();
            Update(3);
            this.dataGrid1.ItemsSource = dt1.DefaultView;
            this.dataGrid2.ItemsSource = dt2.DefaultView;
        }

 

发表评论
用户名: 匿名