应用小算法

王朝学院·作者佚名  2016-08-27  
宽屏版  字体: 小 | 中 | 大 | 超大  

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

简化需求:

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

1、声明变量

PRivateDispatcherTimer timer;

DataTable dt=newDataTable();

DataTable dt1=newDataTable();

DataTable dt2=newDataTable();publicstaticintcurrentRows =0;//当前行publicstaticintcurrentRows2 =0;//中间变量

View Code

定时器:

timer =newDispatcherTimer();

timer.Interval=newTimeSpan(0,0,5);

timer.Tick+=newEventHandler(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

privatevoidInitialize(intnum)

{

dt.Columns.Add(newDataColumn("id",typeof(int)));

dt.Columns.Add(newDataColumn("name",typeof(string)));for(inti =0; i < num; i++)

{

DataRow dr=dt.NewRow();

dr["id"] =i;

dr["name"] ="tom"+i.ToString();

dt.Rows.Add(dr);

}

dt1.Columns.Add(newDataColumn("id",typeof(int)));

dt1.Columns.Add(newDataColumn("name",typeof(string)));

dt2.Columns.Add(newDataColumn("id",typeof(int)));

dt2.Columns.Add(newDataColumn("name",typeof(string)));

}

初始化时调用:

Initialize(11);

4、编写函数

publicvoidUpdate(intnum)

{introws =dt.Rows.Count;intnum1 =0;intnum2 =0;

currentRows=currentRows2;for(inti = 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(inti = 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中的数据

voidtimer_Tick(objectsender, EventArgs e)

{

dt1.Clear();

dt2.Clear();

Update(3);}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有