C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ListViewでドロップダウンリスト


(過去ログ 88 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■52426 / inTopicNo.1)  ListViewでドロップダウンリスト
  
□投稿者/ まさひろ (11回)-(2010/08/09(Mon) 11:19:20)

分類:[.NET 全般] 

いつもお世話になります。まさひろです。

ASP.NET3.5(VWD2008)、ORACLE11で勉強をしています。
また分からないことがあり、ご教授頂きたく書き込ませていただきました。

ListViewで登録、更新、削除機能を作成しています。
その中で登録時、ドロップダウンリストを選択させているのですが、

「Eval()、XPath()、および Bind() のようなデータバインド メソッドは、
データバインドされたコントロールのコンテキストでのみ使用することができます。」

と言うエラーが出てしまいます。
実際のソースは下記の通りです。


<InsertItemTemplate>
<tr style="">
<td style="width:100px;">
<asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="挿入" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="クリア" />
</td>
<td style="width:100px;">
<asp:DropDownList ID="ddl_ListView" runat="server"
DataSourceID="ObjectDataSource1"
DataTextField="NAME"
DataValueField="CD"
SelectedValue='<%# Bind("CD") %>'>
</asp:DropDownList>
</td>
</tr>
</InsertItemTemplate>

で、おそらく原因はSelectedValue='<%# Bind("CD") %>'の部分だろうとは思うのですが、
この部分を省くと、listview用のデータソースのパラメータはドロップダウンリストで選択
されたものではなく、Nothingが入ってきてしまいます。
データソースの定義は以下の通りです。

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
InsertMethod="InsertListViewData">
<InsertParameters>
<asp:Parameter Name="CD" Type="String" />
</InsertParameters>
</asp:ObjectDataSource>

すみませんが、原因がお分かりの方いらっしゃいましたらご教授願えないでしょうか。
宜しくお願いいたします。


引用返信 編集キー/
■52458 / inTopicNo.2)  Re[1]: ListViewでドロップダウンリスト
□投稿者/ もりお (256回)-(2010/08/10(Tue) 09:00:32)
No52426 (まさひろ さん) に返信

> すみませんが、原因がお分かりの方いらっしゃいましたらご教授願えないでしょうか。
> 宜しくお願いいたします。

回避策としては SelectedValue='<%# Bind("CD") %>' を除去して ListView.ItemInserting 
イベントあたりのハンドラーで明示的にパラメータを作成するとよいのかなとは思うのですが、原因が
分からないのですよね。

原因はこちらの文書が該当するようなしないような。

ASP.NET 2. 0 またはそれ以降のバージョンの異なるデータ ソースを持つ入れ子になったデータ コ
ントロールを使用すると、エラー メッセージ:「Eval()、XPath()、Bind() などのデータ バインデ
ィング メソッドだけをデータ バインド コントロールのコンテキストで使用できる」
http://support.microsoft.com/kb/978215/ja

リンク先は DetailsView 内に配置した DropDownList の DataBind を呼ぶ場合に例外が発生しま
すよーといった内容で、当たらずといえども遠からずと言いますか原因というには微妙な感じです。

引用返信 編集キー/
■52461 / inTopicNo.3)  Re[2]: ListViewでドロップダウンリスト
□投稿者/ まさひろ (12回)-(2010/08/10(Tue) 09:49:58)
2010/08/10(Tue) 09:52:16 編集(投稿者)

もりおさん、いつもありがとうございます。

>
> 回避策としては SelectedValue='<%# Bind("CD") %>' を除去して ListView.ItemInserting
> イベントあたりのハンドラーで明示的にパラメータを作成するとよいのかなとは思うのですが、原因が
> 分からないのですよね。
>

原因はまだわかってないですが、もりおさんの提案していただいた回避策で、
SelectedValue='<%# Bind("CD") %>' を除去し、ListviewではないですがObjectDataSource1.Insertingで
明示的にパラメータにドロップダウンリストの値を入れたところ、取得できました!!

Protected Sub ObjectDataSource1_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceMethodEventArgs) _ Handles ObjectDataSource1.Inserting
e.InputParameters("CD") = DirectCast(ListView1.InsertItem.FindControl("ddl_ListView"), DropDownList).SelectedValue
End Sub

原因についてはもう少しもりおさんに教えていただいた文書を確認してみます。
ありがとうございます!!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -