2009-07-23 9 views
2

に制御し...ASP.net ListViewのアクセスが、私はここで何かが欠けていItemUpdatingイベント

私は、このようにItemUpdatingを発射、エディットモードを残している項目のコントロールの値にアクセスする必要があります。

キー値を取得する方法を見つけたので、更新する必要があるデータベースのレコードがわかりました。問題は、編集行のコントロールの値にアクセスできないように見えることです。

EditTemplateには、いくつかのチェックボックス、ドロップダウン、テキストボックスが含まれています。レコードを更新できるように、これらの値にアクセスする必要があります。

eventargsを見ると、何も表示されません。

私はここで重要なことを見落としていると思います。どんな助けも便利です。

+0

ItemUpdatingイベントハンドラを投稿できますか? –

+0

どのようなデータソースを使用していますか?更新メソッドを作成しようとしているObjectDataSourceがありますか? –

答えて

0

これを行うには2つの方法があります。

最初の方法は、更新コマンドをサポートするデータソースを使用し、値を更新するための双方向バインディングを使用することです。以下のsnippedは、名前と生徒フィールドに値を設定するための双方向バインディングを使用し、それらも更新します。

<EditItemTemplate> 
      <tr style="background-color: #FFCC66;color: #000080;"> 
       <td> 
        <asp:Button ID="UpdateButton" runat="server" CommandName="Update" 
         Text="Update" /> 
        <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
         Text="Cancel" /> 

       </td> 
       <td> 
        <asp:TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>' /> 
       </td> 
       <td> 
        <asp:TextBox ID="studentTextBox" runat="server" Text='<%# Bind("student") %>' /> 
       </td> 
      </tr> 
     </EditItemTemplate> 

これをサポートするデータソースを使用していない場合は、もう1つのことができます。 更新ボタンに「更新」というコマンドがどのように含まれているかに注目してください。これを使用して、リストビューItemCommandイベントを処理して、必要なコントロール値をフェッチすることができます。

editidのコントロールでfindコントロールを呼び出し、コントロールのIDを渡すだけで、そのコントロールを見つけることができます。また、キャストも忘れないでください。

・ホープこれはあなたが直接コントロールにアクセスするには、 "ListView.EditItem.FindControl(" X ")を" 使用することができます

+0

ItemUpdatingの代わりにItemCommandを実行しているのは、私がDataSourceを使用していないためです。 ありがとう! –

+0

再オープン... aspxでUpdateコマンドを使用すると、ItemCommandでcatchするItemUpdatingイベントが発生するので、まだ問題があります。これによりエラーが発生します。 私は別のコマンド名を使用する私は私のリストをリロードするときviewstateに問題があるようです...任意のアイデア? –

+0

私は助けることができる前にいくつかのコードを参照する必要があると思う、コマンド名は、ItemCommandが任意のエラーをスローする必要はありません。また、あなたはまだItemUpdatingイベントを処理していますか?もしあなたが本当なら、あなたが本当に必要なのか分からない。私はあなたがItemCommandイベントのItemUpdatingイベントで行っていたことをすべて実行できると思います。 また、lisを再読み込みするときのviewstateの問題についてもっと情報がありますか? – cptScarlet

2

に役立ちます。

Protected Sub ListView_ItemUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewUpdateEventArgs) Handles ListView.ItemUpdating 

     Dim DropDownListddl As DropDownList = ListView.EditItem.FindControl("DropDownListddl") 

     Lblwarning.Text = DropDownListddl.SelectedValue 
End Sub