I have a class
public class MyClass
{
public int id {get; set;}
public string name {get; set;}
}
I store objects of type MyClass in list:
List<MyClass> listOfObjects {get; set;}
I want user to edit data. To display data I am using ListView control - I am binding listOfObject list to ListView:
<asp:ListView runat="server" ID="ListView1">
<LayoutTemplate>
<table runat="server" id="table1" >
<tr runat="server" id="itemPlaceholder" >
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr id="tr" runat="server">
<td id="td1" runat="server">
<asp:TextBox ID="tb1" runat="server" Text='<%#Eval("id") %>' />
</td>
<td id="td2" runat="server">
<asp:TextBox ID="tb2" runat="server" Text='<%#Eval("name")%>' />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
So far so good, and everything works fine. I see the data in ListView. I do not know how I can edit data in ListView without entering EditMode - I do not have Edit button, I have only textboxes to enter new data. All I want is to bind data edited in textboxes in the opposite direction - into listOfObject list. I have tried many solutions and nothing was working correctly...
I thought that I can read data this way:
var listItems = ListView1.Items.Cast<ListViewDataItem>().Select(a => new MyClass
{
id = ((TextBox)a.FindControl("tb1")).Text,
name = ((TextBox)a.FindControl("tb2")).Text
}).ToList<>();
but with this I get data which were in textbox before editing...
Help me please, because I have no idea how to make it working (maybe it would be better to use ObjectDataSource?)