我有一个绑定到Listview的对象集合,如下所示:
if (!IsPostBack)
{
List<Equipment> persons = new List<Equipment>
{new Equipment{ItemName = "Sworn", ItemCount = 7, ItemCost = 255},
new Equipment{ItemName = "Civ", ItemCount = 3, ItemCost = 80},
new Equipment{ItemName = "Civ", ItemCount = 5, ItemCost = 200}};
lvMain.DataSource = persons;
BindList();
}
我想在此对象集合中添加/更新/删除,并在用户保存时将最终数据对象集合提交给BL ...而不是每次更改行时删除/添加/更新。
所以我的问题是如何维护该数据源的状态?我试过这个(删除示例)
protected void lvMain_ItemCommand(object sender, ListViewCommandEventArgs e)
{
switch (e.CommandName)
{
case "Delete":
{
ListViewDataItem lvdi = (ListViewDataItem)e.Item;
lvMain.Items.Remove(lvdi);
break;
}
但它什么都没做。我无法将其重新绑定到datasrouce,因为此时数据源为null ..我假设listview保持自己的包含数据的视图状态?...我猜更糟糕的是我总是可以在会话中保存对象集合对象.. ..
我做错了什么或想错了路?
答案 0 :(得分:0)
我的建议是将人员存储在Viewstate中,然后添加/编辑/删除。
在Viewstate中存储
ViewState["Persons"] = persons;
退出Viewstate
List<Equipment> persons = (List<Equipment>)ViewState["Persons"];
...对对象执行添加/编辑/删除,然后将其存储回Viewstate