winform中怎样减少dataGridView加载大量数据的时间?
我从网上找的代码:
/// <summary>
/// 创建列
/// </summary>
void InitialGridViewData()
{
//创建编号列
DataGridViewColumn numcol = new DataGridViewTextBoxColumn();
numcol.Name = NumberColName;
numcol.HeaderText = NumberColName;
numcol.DefaultCellStyle.BackColor = Color.FromArgb(212, 208, 200);
numcol.SortMode = DataGridViewColumnSortMode.Programmatic;
numcol.ReadOnly = true;
numcol.Tag = false;
dataGridView.Columns.Add(numcol);
soFieldInfos osmFieldInfos = oRst.GetFieldInfos();
for (int i = 1; i <= osmFieldInfos.Count; i++)
{
soFieldInfo osmField = osmFieldInfos[i];
string columnTitle = osmField.Name;
if (!string.IsNullOrEmpty(osmField.Caption))
columnTitle = osmField.Caption;
DataGridViewColumn col = new DataGridViewTextBoxColumn();
col.Name = osmField.Name;
col.HeaderText = columnTitle;
dataGridView.Columns.Add(col);
}
suSuperMap.ReleaseSmComObject(osmFieldInfos);
osmFieldInfos = null;
//采用虚模式来填充数据
dataGridView.VirtualMode = true;
dataGridView.RowCount = oRst.RecordCount + 1;
}
复制代码
代码
//单元格填充数据事件
void dataGridView_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
// If this is the row for new records, no values are needed.
if (e.RowIndex == this.dataGridView.RowCount)
return;
// 从记录集中读取数据
string colName = this.dataGridView.Columns[e.ColumnIndex].Name;
if (colName.Equals(NumberColName))
{
e.Value = e.RowIndex + 1;
}
else
{
oRst.MoveTo(e.RowIndex + 1);
e.Value = oRst.GetFieldValueText(colName);
}
} 我不太清楚什么意思?还有没有其他办法?
我从网上找的代码:
/// <summary>
/// 创建列
/// </summary>
void InitialGridViewData()
{
//创建编号列
DataGridViewColumn numcol = new DataGridViewTextBoxColumn();
numcol.Name = NumberColName;
numcol.HeaderText = NumberColName;
numcol.DefaultCellStyle.BackColor = Color.FromArgb(212, 208, 200);
numcol.SortMode = DataGridViewColumnSortMode.Programmatic;
numcol.ReadOnly = true;
numcol.Tag = false;
dataGridView.Columns.Add(numcol);
soFieldInfos osmFieldInfos = oRst.GetFieldInfos();
for (int i = 1; i <= osmFieldInfos.Count; i++)
{
soFieldInfo osmField = osmFieldInfos[i];
string columnTitle = osmField.Name;
if (!string.IsNullOrEmpty(osmField.Caption))
columnTitle = osmField.Caption;
DataGridViewColumn col = new DataGridViewTextBoxColumn();
col.Name = osmField.Name;
col.HeaderText = columnTitle;
dataGridView.Columns.Add(col);
}
suSuperMap.ReleaseSmComObject(osmFieldInfos);
osmFieldInfos = null;
//采用虚模式来填充数据
dataGridView.VirtualMode = true;
dataGridView.RowCount = oRst.RecordCount + 1;
}
复制代码
代码
//单元格填充数据事件
void dataGridView_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
// If this is the row for new records, no values are needed.
if (e.RowIndex == this.dataGridView.RowCount)
return;
// 从记录集中读取数据
string colName = this.dataGridView.Columns[e.ColumnIndex].Name;
if (colName.Equals(NumberColName))
{
e.Value = e.RowIndex + 1;
}
else
{
oRst.MoveTo(e.RowIndex + 1);
e.Value = oRst.GetFieldValueText(colName);
}
} 我不太清楚什么意思?还有没有其他办法?
解决方案 »
- 从数据库中读取加密过数据使用数据控件显示并把加密过的数据加密
- 为什么我在com中找不到Animation Control 6.0?
- C++是不是能做到许多C#做不到的?
- double类型的一个格式化问题
- 怎么用程序重新启动一系列的Windows Services?
- 本地数据库中某些数据要上传到服务器上?
- 一个Request.QueryString接收不了+号的问题,大侠帮忙
- javascript中怎么创建二维数组???
- 水晶报表在98下,不能设置横打??
- 在C#中如何定义和使用全局变量?
- 无法生成临时类(result=1)
- 关于获取GridView HyperLinkFiled页面跳转的问题?奇怪
private string connectionString = @"Password=2009;Persist Security Info=True;User ID=sa;Initial Catalog=CF_HK;Data Source=INFOWISE-B6B6E8";
public DataSet GetDataSet()
{
SqlConnection conn = new SqlConnection(connectionString);
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Contact1", conn);
ds = new DataSet();
adapter.Fill(ds, "Contact1");
return ds;
}
获取数据,
接下来我应该怎样做,谁能给个详细的?
//把数据放到DataTable中
DataTable c_dtDtTble = null;
public DataTable GetDataSet()
{
SqlConnection conn = new SqlConnection(connectionString);
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Contact1", conn);
ds = new DataSet();
adapter.Fill(ds, "Contact1");
c_dtDtTble=ds.Table[0];
return c_dtDtTble ;
}
//动态添加dataGridView列标题
private void Form1_Load(object sender, EventArgs e)
{
c_intColumnCount = c_dtDtTble1.Columns.Count;
for (int i = 0; i < c_intColumnCount; i++)
{
DataGridViewColumn l_dgvClmn = new DataGridViewTextBoxColumn();
l_dgvClmn.Name = c_dtDtTble1.Columns[i].ColumnName;
l_dgvClmn.HeaderText = c_dtDtTble1.Columns[i].ColumnName;
dgvContact2.Columns.Add(l_dgvClmn);
}
}
//填充单元格数据
private void dgvContact1_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
e.Value = c_dtDtTble.Rows[e.RowIndex][e.ColumnIndex].ToString();
}