Я в процессе преобразования собственного веб-приложения в winform приложение по отключенным причинам, и я столкнулся со следующей загадкой.
В веб-приложении Function SaveMe()
имеется следующий код на странице Person.ascx.vb ->
//get dataset from session
Dim dsPerson As Data.DataSet = CType(Session.Item("Person" & Me.UniqueID), DataSet)
//if no rows in dataset, add
If dsPerson.Tables(0).Rows.Count = 0 Then
Dim rowPerson As Data.DataRow = dsPerson.Tables(0).NewRow
dsPerson.Tables(0).Rows.Add(FillPersonRow(rowPerson))
Else
//otherwise update
....more code here
Часть, на которой я застрял, - как логически создать набор данных в приложении WinForm?
Должен ли я просто очистить все поля и выбросить их в набор данных? Как ( это то, что я буду исследовать / попробовать, ожидая совета от SO )?
EDIT
Сессия создается / заполняется в подпункте LoadMe()
, вот так ->
//load person
Dim dsTemp As Data.DataSet = BLL.Person.GetPerson(PersonID)
//save to session state
Session.Add("Person" & Me.UniqueID, dsTemp)
EDIT
Я пытаюсь создать переменную уровня формы -> private DataSet _personInfo;
для хранения DataSet, затем в моем FormPaint(int personID)
я вызываю следующее:
_personInfo = ConnectBLL.BLL.Person.GetPerson(personID);
Затем я использую это для заполнения различных полей в Форме.
Далее, на btnUpdate_Click()
Я пробую следующее, но безрезультатно:
void btnUpdate_Click(object sender, EventArgs e)
{
var areChanges = _personInfo.HasChanges();
if (areChanges)
{
var whatChanged = _personInfo.GetChanges();
var confirmChanges =
MessageBox.Show(
"Are you sure you want to make these changes: " +
whatChanged.Tables[0].Rows[0].ItemArray.ToString(), "Confirm Member Info Changes",
MessageBoxButtons.YesNo, MessageBoxIcon.Hand);
if (confirmChanges == DialogResult.Yes)
{
_personInfo.AcceptChanges();
ConnectBLL.BLL.Person.Update(_personInfo);
}
}
FormPaint(HUD.PersonId);
}
Мне неясно, что я делаю не так? Я пропускаю шаг?
Спасибо