Datagridview,ShowOnlyUniqueValuesDuplicateCellValuesC#2005在datagridview中,我使用的是MicrosoftVisualC#2005和framework2.0。当我编程时,我发现在循环内部我需要检查重复值并计算它们,如果出现新值则显示该值并发送邮件,我确实通过smtp获取邮件代码,但我需要计算和消除重复值,只留下原始单元格并更新其余值,这是可能的,它是连接到网格的代码和数据生成,我需要认真的帮助,因为我还没有找到正确的网络代码以有效地完成工作。尝试{e.Result="";//int计数1=0;int值=6000;DataTabledt=newDataTable();dt.Columns.Add(newDataColumn("ComputerName",typeof(String)));//0dt.Columns.Add(newDataColumn("IP",typeof(String)));//1dt.Columns.Add(newDataColumn("MAC",typeof(String)));//2dt.Columns.Add(newDataColumn("Descubierto",typeof(String)));for(inta=1;a<=val;a++){counter.Text=Convert.ToString(a);如果(txtWorkGroupName.Text=="")返回;//数据表dt=newDataTable();//dt.Clear();//3//inti=0;try{//DatosdelgrupoWinNT://&&&&(Nombredelgrupodetrabajo)DirectoryEntryDomainEntry=newDirectoryEntry("WinNT://"+txtWorkGroupName.Text+"");DomainEntry.Children.SchemaFilter.Add("计算机");///****************************************************///与域中的pc交互///*************************************************foreach(DirectoryEntry机器inDomainEntry.Children){stringstrMachineName=machine.Name;字符串strMACAddress="";IP地址IP地址;发现日期时间;尝试{IPAddress=getIPByName(machine.Name);}赶上{继续;}//试着抓///*************************************************///获取Mac///*************************************************strMACAddress=getMACAddress(IPAddress);///****************************************************///发现时间///***************************************************发现=DateTime.Now;///****************************************************///添加数据到datagridview///****************************************************数据行dr=dt.NewRow();dr[0]=机器名称;dr[1]=IP地址;dr[2]=strMAC地址;dr[3]=Convert.ToString(发现);dt.Rows.Add(博士);dgvComputers1.DataSource=dt;dgvComputers1.Refresh();///使用Unique确实有效,这是找到的解决方案之一//dt.Columns(machine.Name).Unique=true;//dt.Columns(IPAddress).Unique=true;//dt.Columns(strMACAddress).Unique=true;}//foreach循环//DataViewdv=newDataView();//dv=dt;线程.睡眠(2000);//dt=((DataView)this.dgvComputers1.DataSource).Table;//dt.WriteXml(@"testermac.xml");}//try/catchcatch(Exceptionex){{MessageBox.Show(ex.Message);}}if(backgroundWorker2.CancellationPending){e.Cancel=true;返回;}}}catch(NullReferenceExceptionex){MessageBox.Show("error:"+ex);//tbmessage.Text+="sehaproducidounerror:"+ex+Environment.NewLine;//tbmessage.SelectionStart=tbmessage.Text.Length;//tbmessage.ScrollToCaret();}catch(NoNullAllowedExceptionex){MessageBox.Show("error:"+ex);}catch(AccessViolationExceptionex){MessageBox.Show("error:"+ex);每次尝试检查与DataTable.Select或DataTable.Rows.Find重复时,如果没有重复,则不添加新行添加新的新行,如果其他列已经存在,则只更新它。您还在循环的每次迭代中设置DataSource,您只需要执行一次。这是一个简单的不完整示例,每秒更新一次网格,您应该能够根据您的程序调整逻辑。以上就是C#学习教程:Datagridview,只显示唯一值DuplicateCellValuesC#2005分享的全部内容,如果对大家有用还需要详细了解C#学习教程,希望大家多多关注—publicpartialclassForm1:Form{privatereadonlyDataGridView_gridView;私有只读数据表_dataTable;publicForm1(){InitializeComponent();_dataTable=newDataTable();DataColumncomputerColumn=newDataColumn("名称");Columns.Add(newDataColumn("IP"));_dataTable.Columns.Add(newDataColumn("MAC"));_dataTable.Columns.Add(newDataColumn("Descubierto"));_dataTable.PrimaryKey=new[]{computerColumn};_gridView=newDataGridView{Dock=DockStyle.Fill,DataSource=_dataTable};控件。添加(_gridView);System.Windows.Forms.Timertimer=newSystem.Windows.Forms.Timer();计时器.间隔=1000;timer.Tick+=TimerTick;定时器。开始();}voidTimerTick(objectsender,EventArgse){DirectoryEntrydomainEntry=newDirectoryEntry("WinNT://mydomain");domainEntry.Children.SchemaFilter.Add("计算机");_dataTable.BeginLoadData();foreach(DirectoryEntrymachineindomainEntry.Children){DataRowrow=_dataTable.Rows.Find(machine.Name);if(row==null){row=_dataTable.NewRow();行[0]=机器名称;_dataTable.Rows.Add(行);行[3]=DateTime.Now.ToString();}_dataTable.EndLoadData();}}网络收藏不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
