我在这里遗漏了一些东西,但我已经盯着它看了太长时间。我有一个简单的ListView,带有典型的编辑/更新/取消按钮。当行进入编辑模式时,我在EditITemTemplate中进行了以下设置:
<EditItemTemplate>
<asp:Label ID="AccountIdLabel" runat="server" Text='<%#Eval("lan_id")%>' />
<asp:TextBox ID="EmployeeIdTextBox" runat="server" Text='<%#Eval("emp_id")%>' Columns="5" />
</EditItemTemplate>
此时,用户在EmployeeIdTextBox中键入一个值。当他们按更新时,它正在尝试执行以下操作:
Private Sub ListView_ItemUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewUpdateEventArgs) Handles EmployeeListView.ItemUpdating
Dim accountId = CType(EmployeeListView.EditItem.FindControl("AccountIdLabel"), Label).Text
Dim employeeId = CType(EmployeeListView.EditItem.FindControl("EmployeeIdTextBox"), TextBox).Text
UpdateMap(accountId, employeeId)
EmployeeListView.EditIndex = -1
GetData()
End Sub
问题是“employeeId”会在文本框中返回原始值,而不是用户输入的内容。我错过了什么?
更新:Found it。像往常一样,由于此处未包含的其他代码导致问一个简单的问题。 :)
答案 0 :(得分:1)
找到它 - 我在处理其他事件的ItemCommand事件中有代码,但无论命令如何,它都在最后执行GetData(),因此基本上数据在ItemUpdating事件触发之前被刷新。我收紧了ItemCommand,它现在按预期工作了。
答案 1 :(得分:0)
我认为这是因为ItemUpdating事件在ListView更新记录之前触发。您可能希望将此代码放在ItemUpdated事件中。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemupdating.aspx