EDIT: Извините, ребята, я был немного слеп с этой штукой, я разместил «решение» ниже под «проблемой».C# Добавить строки/столбцы в существующий DataTable по отдельному методу
ORIGINAL:
Я не могу показаться, чтобы получить за эту проблему (даже после поиска много на SO): У меня есть DataTable объект, который я хочу, чтобы «подготовить» для населения данных следующим образом:
Моя модель класса собственности (имя_класса "DataMdl"):
private static DataTable _datatbl;
public DataTable datatbl
{
get { return _datatbl; }
set
{
_datatbl = value;
OnPropertyChanged(new PropertyChangedEventArgs("datatbl"));
}
}
Зов prepdatatable в ViewModel-метод:
prepdatatable(DataMdl.datatbl, 5, 9)
Мой prepdatatable метод:
private void prepdatatable(DataTable dt, int rowcount, int colcount)
{
dt = new DataTable();
int i = 0;
for (i = 0; i < colcount; i++)
{
dt.Columns.Add("col" + i);
}
for (i = 0; i < rowcount; i++)
{
dt.Rows.Add("row" + i);
}
}
После вызова выше метод, который я пытаюсь заполнить DataTable в методе, который под названием prepdatatable с
DataMdl.datatbl.Rows[0][0] = "..."
DataMdl.datatbl.Rows[0][1] = "..."
...
DataMdl.datatbl.Rows[1][0] = "..."
...
and so on
В этом случае я получаю NullReferenceException на DataMdl.datatbl ,
Когда я пытаюсь инициализировать DataMdl.datatbl за пределами prepdatatable, я получаю исключение NullReferenceException внутри «dt» внутри prepdatatable.
"РЕШЕНИЕ": Просто сделайте prepdatatable Вернуть DataTable вместо пустоты, а затем присвоить его значение свойству DataMdl.datatbl:
private DataTable prepdatatable(int rowcount, int colcount)
{
var dt = new DataTable();
int i = 0;
for (i = 0; i < colcount; i++)
{
dt.Columns.Add("col" + i);
}
for (i = 0; i < rowcount; i++)
{
dt.Rows.Add("row" + i);
}
return dt;
}
и
DataMdl.datatbl = prepdatatable(5, 9);
Спасибо за ваш интерес.
Где Вы получаете это исключение? Является 'datatbl = new DataTable();' единственным местом, где вы инициализируете таблицу, прежде чем передавать ее методу? –
Вы правильно добавляете строки и столбцы. Я думаю, что вы передаете 'null' вместо datatable к этому методу. –
_" EDIT: "datatbl" является свойством моего класса модели. "_ Затем покажите соответствующий реальный код вместо кода, который работает. Мы не можем исправить проблему, которая не существует. –