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

これは、ListView がレコードを更新する前に ItemUpdating イベントが発生するためだと思います。代わりに、このコードを ItemUpdated イベントに配置することをお勧めします。

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

于 2008-11-26T19:57:12.490 に答える