2013-11-02 4 views
1

У меня есть небольшой класс Student, который реализует интерфейс. Проблема в том, что функция ADD() вызывается из формы Windows, и как только она достигает кода, в котором вызывается функция Update(), DataTable _dtable (объявленная локально) получает значение null. Код работает нормально, если я вызываю функцию Update() из формы вместо класса.Функция, не работающая с интерфейсом

Это первый раз, когда я задаю любой вопрос на этом сайте, поэтому я не знаю правил, но если я могу задать два вопроса, то я хотел бы знать, как лучше всего манипулировать данными, ориентированных и отключенных. Метод, который я использую, не очень практичен, так как я не использую хранимые процедуры SQL. Ссылка на какой-то учебник будет отличной.

Форма:

void IForm.SaveData(DBCommandType mode) 
{ 
    if (mode == DBCommandType.INSERT) 
    { 
     _std.FirstName = txtFirstName.Text; 
     _std.LastName = txtLastName.Text; 
     _istd.Add(); 
    } 
    else if (mode == DBCommandType.UPDATE) 
    { 
     _istd.Update(_rowPosition); 
    } 
} 

Студент Класс:

int IStudent.Add() 
{ 
    int rowPosition; 
    int result; 
    Student std = new Student(); 
    IStudent istd; 
    istd = (IStudent)std; 
    DataRow drNewRow = _dtable.NewRow(); 
    _dtable.Rows.Add(drNewRow); 
    rowPosition = _dtable.Rows.Count - 1; 
    //_dtable holds it value before the Update() function gets called. 
    result = istd.Update(rowPosition); 
    return 1; 
} 

int IStudent.Update(int _rowPosition) 
{ 
    int result =0; 
    if (_dtable.Rows.Count != 0) 
    { 
     _dtable.Rows[_rowPosition]["FirstName"] = this.FirstName; 
     _dtable.Rows[_rowPosition]["LastName"] = this.LastName; 
     result = _dbc.UpdateDataTable(); 
    } 
    return result; 
} 

ответ

1

При обновлении строки из таблицы убедитесь, что имеется ряд перед обновлением.

Заменить следующее:

 result = istd.Update(rowPosition); 

с:

if(rowPosition > -1) 
    result = istd.Update(rowPosition); 
+0

уход объяснить немного? –

+1

@retailcoder: проверьте его сейчас. –

+0

Спасибо @Sudhakar за предложение. Я все еще получаю ту же ошибку. В режиме отладки он показывает мне, что есть 4 записи, но как только он вызывает Update(), _dtable становится ясным и устанавливается в null. Если я называю то же самое из FORM вместо класса, он отлично работает. – user2947021

Смежные вопросы