У меня есть datagrid, который обновляется каждые 3 секунды, а при обновлении происходит Datatable, каждый раз неожиданно сбрасывается. То, что я делаю, - это добавление значений из одного документа в другой.Datatable неожиданно возвращается в исходное состояние
Однако, если используется «DefaultView.ToTable», он сохраняет данные.
В принципе, у меня есть 2 datTables dtTopSQL и dtCurTopSQL.
dtTopSQL получает новые данные и добавляет к datCurTopSQL datatable, и я хочу хранить строки в dtCurTopSQL;
// Initial Load the Datatable Structure
private void Main_Load(object sender, EventArgs e)
{
dtTopSQL.Columns.Add("SQL_ID", typeof(string));
dtTopSQL.Columns.Add("Count", typeof(Int16));
dtTopSQL.Columns.Add("CurTime", typeof(DateTime));
}
// Timer start refreshing the datagrid
private void timer_TimerTopSQL(object sender, EventArgs e)
{
dtTopSQL.Clear(); // Clear before the Fill
odaTopSQL = new OracleDataAdapter(getTopSQLString, oradb);
odaTopSQL.Fill(dtTopSQL);
getTopSQL();
}
// Merging datatable starts here.
public void getTopSQL()
{
for (int i = 0; i < dtTopSQL.Rows.Count; i++)
{
bool isDupe = false;
for (j = 0; j < dtCurTopSQL.Rows.Count; j++)
{
if (dtTopSQL.Rows[i][0].ToString() == dtCurTopSQL.Rows[j][0].ToString())
{
dtCurTopSQL.Rows[j][1] = int.Parse(dtCurTopSQL.Rows[j][1].ToString()) + int.Parse(dtTopSQL.Rows[i][1].ToString());
dtCurTopSQL.Rows[j][2] = CurDate;
isDupe = true;
break;
}
}
if (!isDupe)
{
dtCurTopSQL.ImportRow(dtTopSQL.Rows[i]);
dtCurTopSQL.Rows[j][2] = CurDate;
}
}
ugTopSQL.DataSource = dtCurTopSQL; // Bind the merged Datatable.
}
Над кодом работает, если я использую ниже, прежде чем просто привязывать данные;
dtCurTopSQL = dtCurTopSQL.DefaultView.ToTable();
Однако я не понимаю, почему? Я хочу хранить данные без использования DefaultView.ToTable
Не могли бы вы объяснить, пожалуйста?
Спасибо за ответ. Однако это не сработало. –