我有一个班级
public class MyClass
{
public int id {get; set;}
public string name {get; set;}
}
我在列表中存储MyClass类型的对象:
List<MyClass> listOfObjects {get; set;}
我希望用户编辑数据。要显示数据,我正在使用ListView控件 - 我将listOfObject列表绑定到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>
到目前为止一切顺利,一切正常。我在ListView中看到了数据。 我不知道如何在不进入EditMode的情况下编辑ListView中的数据 - 我没有编辑按钮,我只有文本框来输入新数据。 我想要的是将文本框中编辑的数据以相反的方向绑定到listOfObject列表中。我尝试了很多解决方案 什么都没有正常工作......
我以为我可以这样读取数据:
var listItems = ListView1.Items.Cast<ListViewDataItem>().Select(a => new MyClass
{
id = ((TextBox)a.FindControl("tb1")).Text,
name = ((TextBox)a.FindControl("tb2")).Text
}).ToList<>();
但是有了这个,我在编辑之前得到了文本框中的数据......
请帮帮我,因为我不知道如何让它发挥作用 (也许最好使用ObjectDataSource?)
答案 0 :(得分:0)
您在哪里调用代码的最后一部分?我想你有一个提交按钮,你是否在其Click
EventHandler中调用该代码?
您必须覆盖您的数据。如果您在Page的Load事件中使用DataBind,请确保仅在页面未回发时才这样做。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// databind
}
}