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

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

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

Re[11]: DataRepeaterにComboBoxを配置


(過去ログ 65 を表示中)

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

■37700 / inTopicNo.1)  DataRepeaterにComboBoxを配置
  
□投稿者/ ゆい (4回)-(2009/06/29(Mon) 11:12:38)

分類:[.NET 全般] 

2009/06/29(Mon) 11:13:38 編集(投稿者)

ゆいと申します。
DataRepeaterにComboBoxを配置した場合の挙動について教えて下さい。

DataRepeater内(テストデータが3明細あります)に、TextBoxやComboBox等を配置しているんですが、
明細のどれか一つのComboBoxをプルダウンで変更すると、全ての明細のComboBoxが変わってしまいます。


以下のサイトを参考に、ListBoxの場合の対応策を行ってみたんですが、
データベースとの連動ができず(バインドされない?)途方に暮れています。

実行時にコントロールが正しく表示されない
http://msdn.microsoft.com/ja-jp/library/cc488312.aspx


やりたい事は、ComboBoxのValueMember、DisplayMemberに顧客マスタのID、名前を表示して、
明細テーブルの顧客IDフィールドに、ValueMemberのIDを入れたいのです。

現在設定している内容は以下です。

DataSource = kokyakuBindingSource
ComboBox.ValueMember = kokyaku_id
ComboBox.DisplayMember = kokyaku_name
ComboBox.SelectedValue = order_msiBindingSource - kokyaku_id

すごく困っています。よろしくお願いします。

WinXP SP3
VB2008 Pro SP1


引用返信 編集キー/
■37719 / inTopicNo.2)  Re[1]: DataRepeaterにComboBoxを配置
□投稿者/ みきぬ (497回)-(2009/06/29(Mon) 14:17:15)
No37700 (ゆい さん) に返信
> やりたい事は、ComboBoxのValueMember、DisplayMemberに顧客マスタのID、名前を表示して、
> 明細テーブルの顧客IDフィールドに、ValueMemberのIDを入れたいのです。
>
今どうやっているのか私には理解できなかったけど、
Repeater の ItemTemplate のところにこんな感じで書けばできるはず。
キモは DropDownList.SelectedValue プロパティにデータバインド式を適用すること。

<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("ID") %>'>
<asp:ListItem Text="りんご" Value="1" />
<asp:ListItem Text="みかん" Value="2" />
<asp:ListItem Text="バナナ" Value="3" />
<asp:ListItem Text="レモン" Value="4" />
</asp:DropDownList>

引用返信 編集キー/
■37722 / inTopicNo.3)  Re[2]: DataRepeaterにComboBoxを配置
□投稿者/ ゆい (5回)-(2009/06/29(Mon) 14:28:26)
No37719 (みきぬ さん) に返信
> ■No37700 (ゆい さん) に返信
>>やりたい事は、ComboBoxのValueMember、DisplayMemberに顧客マスタのID、名前を表示して、
>>明細テーブルの顧客IDフィールドに、ValueMemberのIDを入れたいのです。
>>
> 今どうやっているのか私には理解できなかったけど、
> Repeater の ItemTemplate のところにこんな感じで書けばできるはず。
> キモは DropDownList.SelectedValue プロパティにデータバインド式を適用すること。
>
> <asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("ID") %>'>
> <asp:ListItem Text="りんご" Value="1" />
> <asp:ListItem Text="みかん" Value="2" />
> <asp:ListItem Text="バナナ" Value="3" />
> <asp:ListItem Text="レモン" Value="4" />
> </asp:DropDownList>
>

みきぬ さん
お返事ありがとうございます。

VB2008で開発を行っているんですが、
ComboBoxのSelectedValueに、データをバインドする?ということでしょうか?

どうかよろしくお願いします。

引用返信 編集キー/
■37725 / inTopicNo.4)  Re[3]: DataRepeaterにComboBoxを配置
□投稿者/ みきぬ (499回)-(2009/06/29(Mon) 14:54:31)
No37722 (ゆい さん) に返信
> VB2008で開発を行っているんですが、
> ComboBoxのSelectedValueに、データをバインドする?ということでしょうか?
>
> どうかよろしくお願いします。
>
Repeater コントロールに設定しているデータソースがありますよね。(ComboBox に設定しているデータソースとは別の)
ComboBox の SelectedValue に、そのデータソースの列をバインドするということです。

これで分からなければ…そうですね、一旦 Repeater は置いといて、新しく GridView とかを置いて、
そこに適当な列に対応した BoundField を追加してみてください。
で、それを TemplateField に変換して、変換したものをソースビューで見てみてください。
↓こんなのが表示されたりはしませんか?

<asp:Label ID="Label1" runat="server" Text='<%# Bind("ID") %>'></asp:Label>

こういったものを、Repeater の場合は全部自分で書いてあげないといけません。

引用返信 編集キー/
■37726 / inTopicNo.5)  Re[4]: DataRepeaterにComboBoxを配置
□投稿者/ ぱると (42回)-(2009/06/29(Mon) 15:00:35)
>みきぬさん
DataRepeaterってあるのでWebアプリ(ASP.NET)ではないような気がします…。
引用返信 編集キー/
■37728 / inTopicNo.6)  Re[5]: DataRepeaterにComboBoxを配置
□投稿者/ みきぬ (500回)-(2009/06/29(Mon) 15:26:16)
2009/06/29(Mon) 15:31:45 編集(投稿者)

No37726 (ぱると さん) に返信
> >みきぬさん
> DataRepeaterってあるのでWebアプリ(ASP.NET)ではないような気がします…。

おお、こりゃまたどえらい失礼をしました。

であれば、↓で自分が書いたのと同じ原因な気がします。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=35451&KLOG=61


──━━──   とりあえず穴に入ってきます。
引用返信 編集キー/
■37729 / inTopicNo.7)  Re[6]: DataRepeaterにComboBoxを配置
□投稿者/ ゆい (6回)-(2009/06/29(Mon) 15:45:46)
No37728 (みきぬ さん) に返信
> 2009/06/29(Mon) 15:31:45 編集(投稿者)
>
> ■No37726 (ぱると さん) に返信
>>>みきぬさん
>>DataRepeaterってあるのでWebアプリ(ASP.NET)ではないような気がします…。
>
> おお、こりゃまたどえらい失礼をしました。
>
> であれば、↓で自分が書いたのと同じ原因な気がします。
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=35451&KLOG=61
>
>
> ──━━──   とりあえず穴に入ってきます。


みきぬさん
ぱるとさん
ご回答ありがとうございます。
お返事が遅くなってしまいました。

> であれば、↓で自分が書いたのと同じ原因な気がします。
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=35451&KLOG=61
を試してみたいと思います。

分からない場合、再度質問させて下さい。
よろしくお願いします。




引用返信 編集キー/
■37736 / inTopicNo.8)  Re[7]: DataRepeaterにComboBoxを配置
□投稿者/ ゆい (7回)-(2009/06/29(Mon) 16:45:01)
> であれば、↓で自分が書いたのと同じ原因な気がします。
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=35451&KLOG=61
を見ると、

> それぞれの ComboBox の DataSource プロパティに同じデータソースのインスタンスを適用するとそうなった記憶が。
> うろ覚えだけど。
という事でしたので、

下のページを参考に、インスタンスを別に適用するようにしてみました。
http://www.vbforums.com/showthread.php?t=535556

その結果、Comboboxは個別に選択できるようになったんですが、
SelectedValueがきいてないといいますか、なんといえばよいのでしょうか?

DBのデータ(キー)と一致しているリスト項目が、デフォルトで選択されないです。
※Comboboxでデフォルト選択されているリスト項目がバラバラです。

どうにかなりませんでしょうか?
よろしくお願いします。


以下にソースを記します。



SelectedValueは↓の設定になっています。

ComboBox.SelectedValue = order_msiBindingSource - kokyaku_id

↓ソース
Private Sub DataRepeater1_ItemCloned(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs) Handles DataRepeater1.ItemCloned


Try

Dim Cmb As ComboBox = e.DataRepeaterItem.Controls("M_supplier_idComboBox")

      ’↓以下の部分は、実際にはDBからデータを取得します。

Dim VDP_Array As New ArrayList
VDP_Array.Add(New ComboListData("A店", 1))
VDP_Array.Add(New ComboListData("B店", 2))
VDP_Array.Add(New ComboListData("C店", 3))
VDP_Array.Add(New ComboListData("D店", 4))
VDP_Array.Add(New ComboListData("E店", 5))

Cmb.DisplayMember = "DisplayMember"
Cmb.ValueMember = "ValueMember"
Cmb.DataSource = VDP_Array

'Cmb.SelectedValue = 3

Catch ex As Exception

End Try

End Sub


Private Class ComboListData

Private sName As String
Private iID As Integer

Public Sub New()
sName = ""
iID = 0
End Sub

Public Sub New(ByVal Name As String, ByVal ID As Integer)
sName = Name
iID = ID
End Sub

Public Property DisplayMember() As String
Get
Return sName
End Get

Set(ByVal sValue As String)
sName = sValue
End Set
End Property

Public Property ValueMember() As Integer
Get
Return iID
End Get

Set(ByVal iValue As Integer)
iID = iValue
End Set
End Property

Public Overrides Function ToString() As String
Return sName
End Function

End Class

引用返信 編集キー/
■37744 / inTopicNo.9)  Re[8]: DataRepeaterにComboBoxを配置
□投稿者/ みきぬ (501回)-(2009/06/29(Mon) 17:19:52)
No37736 (ゆい さん) に返信

> 'Cmb.SelectedValue = 3
このコメントを外した場合は、意図通りの項目が選択されていますか?

> ComboBox.SelectedValue = order_msiBindingSource - kokyaku_id

これって、どういう意図を持った計算式ですか?
order_msiBindingSource と kokyaku_id の型はそれぞれ何ですか?
引用返信 編集キー/
■37746 / inTopicNo.10)  Re[9]: DataRepeaterにComboBoxを配置
□投稿者/ ゆい (8回)-(2009/06/29(Mon) 17:34:54)
No37744 (みきぬ さん) に返信
> ■No37736 (ゆい さん) に返信
>

みきぬさん
ご回答ありがとうございます。

>>'Cmb.SelectedValue = 3
> このコメントを外した場合は、意図通りの項目が選択されていますか?
>
項目は選択されません。
コメントを外しても動きが変わらないです。


>>ComboBox.SelectedValue = order_msiBindingSource - kokyaku_id
>
> これって、どういう意図を持った計算式ですか?
> order_msiBindingSource と kokyaku_id の型はそれぞれ何ですか?

すいません。
ComboBoxのプロパティで、SelectedValueを見ると、その様に書かれていましたので、
質問に書いてしまいました。

「order_msiBindingSource - kokyaku_id」は、IDEで、ComboBoxのSelectedValueプロパティをみると、このように値が入っていると言う事です。

よろしくお願いします。




引用返信 編集キー/
■37753 / inTopicNo.11)  Re[10]: DataRepeaterにComboBoxを配置
□投稿者/ みきぬ (502回)-(2009/06/29(Mon) 18:09:22)
No37746 (ゆい さん) に返信
> >>'Cmb.SelectedValue = 3
>>このコメントを外した場合は、意図通りの項目が選択されていますか?
>>
> 項目は選択されません。
> コメントを外しても動きが変わらないです。
>
むう、だとすると私にはわからないなあ。
No.37736 のコードから、ComboBox.ValueMember プロパティに指定した列のデータ型と、ComboBox.SelectedValue プロパティに指定した値のデータ型があってないのかなあと予想したんだけど、その予想は外れてしまったので。
引用返信 編集キー/
■37755 / inTopicNo.12)  Re[11]: DataRepeaterにComboBoxを配置
□投稿者/ ゆい (9回)-(2009/06/29(Mon) 18:35:22)
みきぬさん
いろいろとありがとうございました。

欧米のサイト等、いろいろと検索してみたんですが、皆さんご苦労なされているようですね。

DataRepeaterが悪いのやらComboBoxが悪いのやら・・・

後は、自力で調べてみます。

本当にありがとうございました。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -