2

我在这里遗漏了一些东西,但我已经盯着它看了太久而看不到它。我有一个简单的 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”返回文本框中的原始值,而不是用户输入的值。我错过了什么?

更新:找到了。像往常一样,由此处未包含的其他代码引起的,以提出一个简单的问题。:)

4

2 回答 2

1

找到它 - 我在 ItemCommand 事件中有处理其他事件的代码,但不管命令如何,它都在最后执行 GetData(),因此基本上在 ItemUpdating 事件触发之前数据正在刷新。我收紧了 ItemCommand,它现在按预期工作。

于 2008-11-26T21:09:32.347 回答
0

我认为这是因为 ItemUpdating 事件在 ListView 更新记录之前触发。您可能希望将此代码放在 ItemUpdated 事件中。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemupdating.aspx

于 2008-11-26T19:57:12.490 回答