У меня есть DataTable, который имеет столбцы, сгенерированные при загрузке страницы. Поскольку я не хочу, чтобы эта таблица была заново создана каждый раз, когда происходит обратная передача, у меня она есть в инструкции no-postback if. К оглавлению:Столбцы в DataTable Disappearing
DataTable purchase_display_data = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
DataColumn rownumber = new DataColumn();
rownumber.DataType = System.Type.GetType("System.Int16");
rownumber.AutoIncrement = true;
rownumber.AutoIncrementSeed = 1;
rownumber.AutoIncrementStep = 1;
purchase_display_data.Columns.Add(rownumber);
purchase_display_data.Columns.Add("Item");
purchase_display_data.Columns.Add("Charge");
}
}
Позже, я пытаюсь добавить данные после нажатия кнопки. С:
protected void buttonOK_Click(object sender, EventArgs e)
{
DataRow newline = purchase_display_data.NewRow();
newline[1] = "1";
newline[2] = "2";
purchase_display_data.Rows.Add(newline);
}
При нажатии этой кнопки я возвращаю сообщение о том, что столбец не найден. В отладке я замечаю, что у моего DataTable есть нулевые столбцы, несмотря на то, что они были успешно созданы при загрузке страницы (за отладку и другое тестирование). Кажется, что столбцы просто исчезли. Может кто-нибудь сказать мне, почему это происходит и, конечно, как это исправить.
Вы не совсем следующие общие соглашения об именах для вашего имущества, но подход хорош. –
@EricJ. Я знаю, я просто назвал свойство переменной, чтобы не изменять его код в 'Page_Load'. – dario
Как написано, это приводит к ошибке «Object reference not set to a instance of object» при создании столбцов. –