我有以下代码,我认为这将使我能够在列表视图中编辑记录但是当我点击编辑时我得到回发但是我无法编辑任何内容。我做错了吗?
<asp:ListView ID="lv_Personnel" runat="server" OnItemEditing="lv_Personnel_ItemEditing">
<LayoutTemplate>
<table cellpadding="2" border="1" runat="server" id="tbl_Personnel">
<tr id="headerRow" runat="server">
<th>
</th>
<th>
Level of Staff
</th>
</tr>
<tr runat="server" id="itemPlaceholder" />
<tr runat="server" id="insertPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server">
<td>
<asp:LinkButton ID="btnEdit" runat="server" Text="Edit" CommandName="Edit" />
</td>
<td>
<%# Eval("LineDescription")%>
</td>
</tr>
</ItemTemplate>
<EditItemTemplate>
<tr runat="server" style="background-color: #ADD8E6">
<td>
</td>
<td>
Level of Staff:
<asp:TextBox ID="tb_LevelOfStaff" runat="server" Text='<%# Eval("LineDescription") %>' />
</td>
</tr>
</EditItemTemplate>
</asp:ListView>
答案 0 :(得分:1)
您是否将ListView数据绑定到任何东西?如果它不是数据绑定,那么您将不得不通过处理ItemEditing事件手动指定要编辑的记录。
protected void MyListView_ItemEditing(object sender, ListViewEditEventArgs e)
{
ListView1.EditIndex = e.NewEditIndex;
// Re-databind here
}
答案 1 :(得分:0)
根据评论,除非您关闭了ViewState,否则不要在每个回发上进行数据绑定。
private void Page_Load()
{
if (!IsPostBack)
{
//databind
}
}
答案 2 :(得分:-1)
看起来我只需要在我的ListView声明中添加一个OnItemEditing事件以及备份它的函数。我已经更新了上面的代码snippit,以反映在aspx文件中所做的更改。