- 添加datatable
private DataTable dataTable = new DataTable();
2.初始化
private void DGVInit()
{
dataTable.Columns.Add("序号");
dataTable.Columns.Add("报警代码");
dataTable.Columns.Add("报警时间");
dataTable.Columns.Add("报警信息");
this.dgv.DataSource = dataTable;
this.dgv.Columns[0].Width = 100;
this.dgv.Columns[1].Width = 200;
this.dgv.Columns[2].Width = 300;
this.dgv.Columns[3].Width = 500;
this.dgv.AllowUserToResizeColumns = false;//不允许用户改变列宽
this.dgv.AllowUserToAddRows = false;//无法修改
this.dgv.AllowUserToResizeRows = false;//不允许用户改变行宽
this.dgv.ReadOnly = true;//只读
this.dgv.RowHeadersVisible = false;//头列不显示
for (int i = 0; i < this.dgv.Columns.Count; i++)
{
this.dgv.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
this.dgv.ForeColor = Color.Red;
//双缓冲
var dgv = new DataGridView();
dgv.SetDoubleBuffered(true);
}
- 双缓冲 加扩展方法
public static class Extensions
{
/// <summary>
/// 将给定的DataGridView设置双缓冲
/// </summary>
/// <param name="dgv">给定的DataGridView</param>
/// <param name="b">设置为ture即打开双缓冲</param>
public static void SetDoubleBuffered(this DataGridView dgv, bool b)
{
var dgvType = dgv.GetType();
var pi = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic);
pi.SetValue(dgv, b, null);
}
}
- 是否包含
private bool IsContents(DataTable data, string errorID)
{
bool b = false;
string s = dataTable.Columns[1].ToString();
try
{
if (data.Select(s + "='" + errorID + "'").Length > 0)
{
b = true;
}
}
catch
{
return b = false;
}
return b;
}
- 把数据添加到时datatable里
private void Updata(string errorID, string dateTime, string errorMes)
{
string strNum;
int y = this.dgv.Rows.Count;
strNum = (this.dgv.Rows.Count + 1).ToString();
DataRow arrData = dataTable.NewRow();
arrData.ItemArray = new object[] { strNum, errorID, dateTime, errorMes };
dataTable.Rows.Add(arrData);
this.dgv.FirstDisplayedScrollingRowIndex = y;
this.dgv.Update();
}
- 根据数据清除某行
private void Clear(string errorID)
{
string s = dataTable.Columns[1].ToString();
if (IsContents(dataTable, errorID))
{
DataRow[] ss = dataTable.Select(s + "='" + errorID + "'");
dataTable.Rows.Remove(ss[0]);
}
this.dgv.Update();
}