using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace PrinterTest
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (listView1.Tag != null)
{
DataTable dtbTemp = listView1.Tag as DataTable;
int intColumnsCount = dtbTemp.Columns.Count;
string[] strColumnNameArr = new string[intColumnsCount];
for (int i1 = 0; i1 < intColumnsCount; i1++)
{
strColumnNameArr[i1] = dtbTemp.Columns[i1].ColumnName;
}
DataTable dtbCovert = GetDistinctPrimaryKeyColumnTable(dtbTemp, strColumnNameArr);
ShowInListView(listView2, dtbCovert);
}
}
private DataTable CreateDataTable()
{
DataTable dtbTemp = new DataTable();
for (int i1 = 0; i1 < 5; i1++)
{
dtbTemp.Columns.Add("Column" + (i1 + 1).ToString(), typeof(string));
}
int intNameI1 = 0;
for (int i1 = 0; i1 < 1000; i1++)
{
DataRow dtrTemp = dtbTemp.NewRow();
if (i1 % 50 == 0)
{
++intNameI1;
}
for (int j2 = 0; j2 < 5; j2++)
{
dtrTemp[j2] = intNameI1 + "," + j2;
}
dtrTemp.EndEdit();
dtbTemp.Rows.Add(dtrTemp);
}
dtbTemp.AcceptChanges();
return dtbTemp;
}
public DataTable GetDistinctPrimaryKeyColumnTable(DataTable dt, string[] PrimaryKeyColumns)
{
DataView dv = dt.DefaultView;
DataTable dtDistinct = dv.ToTable(true, PrimaryKeyColumns);
//第一个参数是关键,设置为 true,则返回的 System.Data.DataTable 将包含所有列都具有不同值的行。默认值为 false。
return dtDistinct;
}
private void Form2_Load(object sender, EventArgs e)
{
DataTable dtbTemp = CreateDataTable();
ShowInListView(listView1, dtbTemp);
}
private void ShowInListView(ListView p_lsvView, DataTable p_dtbTable)
{
p_lsvView.BeginUpdate();
p_lsvView.Clear();
if (p_dtbTable != null)
{
int intColumnsCount = p_dtbTable.Columns.Count;
if (intColumnsCount > 0)
{
for (int i1 = 0; i1 < intColumnsCount; i1++)
{
p_lsvView.Columns.Add("Column" + (i1 + 1).ToString());
}
int intRowsCount = p_dtbTable.Rows.Count;
if (intRowsCount > 0)
{
ListViewItem[] objLsvItemArr = new ListViewItem[intRowsCount];
for (int i1 = 0; i1 < intRowsCount; i1++)
{
DataRow dtrTemp = p_dtbTable.Rows[i1];
for (int j2 = 0; j2 < intColumnsCount; j2++)
{
if (objLsvItemArr[i1] == null)
{
objLsvItemArr[i1] = new ListViewItem(dtrTemp[j2].ToString());
}
else
{
objLsvItemArr[i1].SubItems.Add(dtrTemp[j2].ToString());
}
if (i1 % 2 != 0)
{
objLsvItemArr[i1].BackColor = Color.WhiteSmoke;
}
}
}
p_lsvView.Items.AddRange(objLsvItemArr);
}
}
}
p_lsvView.EndUpdate();
p_lsvView.Tag = p_dtbTable;
}
}
}
浙公网安备 33010602011771号