У меня есть класс, который обрабатывает datareading как таковой (Обратите внимание, что ischanged это событие, которое я поднимаю, чтобы указать наличие новой строки)DataReader Кормление управления DataGridView - построчно
public DataRow FetchNext()
{
DataRow drow = dt.NewRow();
if (dr.Read() && dr.HasRows) //this will loop through rows unless cancel is clicked
{
try
{
for (int i = 0; i < listCols.Count; i++)
{
drow[(DataColumn)listCols[i]] = dr[i];
}
dt.ImportRow(drow);
totalRowCount++;
this.isChanged();
return drow;
}
catch (Exception ex)
{
throw;
}
}
else
{
return drow;
}
}
Другой класс который использует этот класс реализует чтение строки и вставляя их в DataGridView следующим образом (бс моего BindingSource, который связан с DataTable DT)
private void buttonGo_Click(object sender, EventArgs e)
{
myrow = p.FetchNext();
this.dt = p.dt.Copy();
bs.DataSource = dt;
dataGridViewMyData.DataSource = bs;
bs.ResetBindings(false);
}
private void handleChanged()
{
bs.ResetBindings(false);
dt.Rows.Add(p.FetchNext());
}
Когда я огнем все вверх я получаю:
System.StackOverflowException was unhandled
_HResult=-2147023895
Любая помощь будет оценена по достоинству.
Какая строка кода создает исключение? –
цикл for в fetchnext() – Cogent
будет этот 'dt.Rows.Add (p.FetchNext());' поднять событие 'handleChanged'? Если это так, то это бесконечный цикл. – TaW