Избегайте наборов данных, если можете.Вместо этого используйте строго типизированные объекты.Если вы используете наборы данных, они уже хорошо сериализуются.Вот грубый пример, чтобы помочь вам.Это будет извлекать значения из текстовых полей и привязывать представление списка к коллекции.Надеюсь, это поможет.
Шаг 1: Создание модели объектов и представлений
[Serializable]
public class Person
{
public String FirstName { get; set; }
public String LastName { get; set; }
public Person(String FirstName, String LastName)
{
this.FirstName = FirstName;
this.LastName = LastName;
}
public Person()
: this(String.Empty, String.Empty)
{
}
}
[Serializable]
public class ViewModelBase
{
}
[Serializable]
public class SomePageViewModel : ViewModelBase
{
private Person currentperson;
public Person CurrentPerson
{
get
{
if (currentperson == null)
{
currentperson = new Person();
}
return currentperson;
}
set
{
currentperson = value;
}
}
private List<Person> persons;
public List<Person> Persons
{
get
{
if (persons == null)
{
persons = new List<Person>();
}
return persons;
}
set
{
persons = value;
}
}
public SomePageViewModel()
{
}
public void RegisterPerson(String FirstName, String LastName)
{
Persons.Add(new Person(FirstName,LastName));
}
public void GetPersons()
{
/*Get Persons from database*/
}
}
Шаг 2: Создание ViewModel в вашем коде файла (PageName.aspx.cs)
/// <summary>
/// Lazy initialized and persisted in session
/// </summary>
public SomePageViewModel ViewModel
{
get
{
if (Session["SomePageViewModel"] == null)
{
Session.Add("SomePageViewModel", new SomePageViewModel());
}
return Session["SomePageViewModel"] as SomePageViewModel;
}
set
{
if (value == null)
{
if (Session["SomePageViewModel"] != null)
{
Session.Remove("SomePageViewModel");
}
}
else
{
Session["SomePageViewModel"] = value;
}
}
}
Шаг 3. Добавление разметки в ASPX
<asp:TextBox runat="server" ID="txtFirstName" ValidationGroup="vgrpRegister" />
<asp:TextBox runat="server" ID="txtLastName" ValidationGroup="vgrpRegister" />
<asp:Button runat="server" ID="btnRegister" Text="Register" ValidationGroup="vgrpRegister"/>
<asp:ListView runat="server" ID="lvPersons" ItemPlaceholderID="phPersons" DataSource='<%#ViewModel.Persons%>'>
<LayoutTemplate>
<table id="tblPersons" border="1">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<asp:PlaceHolder runat="server" ID="phPersons"></asp:PlaceHolder>
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("FirstName") %></td>
<td><%#Eval("LastName") %></td>
</tr>
</ItemTemplate>
</asp:ListView>
Шаг 4. События CodeBehind
protected void Page_Load(object sender, EventArgs e)
{
this.btnRegister.Click += new EventHandler(btnRegister_Click);
}
void btnRegister_Click(object sender, EventArgs e)
{
this.ViewModel.RegisterPerson(txtFirstName.Text, txtLastName.Text);
this.lvPersons.DataBind();
}