none
GridView内にあるDropDownListのToolTipにデータバインドしたい RRS feed

  • 質問

  • お世話になっております

    【開発環境】 .netFrameWork4.5 Windows7 VisualStudio Web2012 IE 

    【データベース】 SQLServer2012

    【やりたい事】

    GridView(SqlDataSource1を利用)のItemの中で、DropDownList(SqlDataSource2を利用)を利用しています。

    TextやValueはDataTextField、DataValueFieldで取得できたのですが、ToolTipにデータをバインドしたい場合はどうすれば良いでしょうか?

    ASPXでできないのであれば、GridViewの中なのでDropDownListのイベントが使えないため、やはりGridViewのRowCreatedイベントでコントロールがDropDownListかを判定してその判定内で実装するしかないのでしょうか?

    ちなみに下記aspxのコードの「????」になっている部分になります。

                <asp:TemplateField HeaderText="ID" SortExpression="aplid" ItemStyle-Wrap="True">
                    <EditItemTemplate>
                        <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True" DataSourceId="SqlDataSource2"
                            DataTextField="aplid" SelectedValue='<%# Bind("sysid")%>' DataValueField="sysinfid" ToolTip='<%# ????  %>'>
                            <asp:ListItem></asp:ListItem>
                        </asp:DropDownList> 
                        <br />
                        <asp:Label ID="Label10" runat="server" Text='<%# Bind("sysname")%>'></asp:Label>
                    </EditItemTemplate>
    

    恐れ入りますが、よろしくお願いいたします。

    2013年10月31日 4:09

すべての返信

  • > ちなみに下記aspxのコードの「????」になっている部分になります。

    その「????」はどこにあって、どのように取得しているのですか?

    2013年10月31日 4:45
  • SurferOnWwwさん

    度々お世話になっております

    この「????」部分のコードで、SqlDataSource2から取得する方法が全く思いつきませんでした。

    現在はaspxではなくてコード側のGridViewのRowCreatedイベントで処理しようとしています。(処理的には同じようなことを書くのでしょうが・・)

    Protected Sub GridView1_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowCreated
            If e.Row.RowType = DataControlRowType.DataRow Then
                If e.Row.RowState = DataControlRowState.Edit Then
                    Try
                        Dim DropDownList1 As DropDownList = DirectCast(e.Row.FindControl("DropDownList1"), DropDownList)
                        DropDownList1.ToolTip = ”あいうえお”
                    Catch ex As Exception
                        'とりあえず何もしない
                    End Try
            End If
    


    ToolTipに「あいうえお」が入っているのは確認できたのですが、これをSqlDataSource2からうまく取得できないものかと悩んでおります。

    2013年10月31日 5:35
  • > この「????」部分のコードで、SqlDataSource2から取得する方法が全く思いつきませんでした。

    そもそも、SqlDataSource2 から取得するという考え方が間違っているのではないですか?

    通常 SqlDataSource2 から取得するのは DropDownList 内に複数ある ListItem の Text と Value のはずです。

    親の DropDownList の ToolTip に表示する文字列を、子の ListItem のためのデータから取得するということが理解できません。

    具体的に何を表示しようとしているのか、ここに書いてあること以外は何も知るすべのない回答者が理解できるよう、説明していただけないでしょうか?

    そのあたりが分かると、もう少しお役に立てる回答ができるかもしれません。

    2013年10月31日 6:12
  • >親の DropDownList の ToolTip に表示する文字列を、子の ListItem のためのデータから取得するということが理解できません。

    すみません。説明不足でしたが選択されたItemに従ってToolTipを可変にしたかったのです。

    なぜかというと、DropDownListの中にそれを入れてしまうとDropDownListの表示幅があまりに大きくなるため、ListItemで現在選択されている値によってToolTipを変更し、マウスカーソルがあたっているとその内容が表示できるようにしたかったということです。

    SqlDataSource2のSelect(実際にはストアドで作成しております)にToolTip表示用の項目も一緒にSelectしてきているので、

    同時にデータバインド出来ないかと考えた次第です。

    SELECT [sysinfid], [aplid],[sysname] FROM [sysinftbl] ORDER BY [aplid]

    上記SQLのsysinfidがValue、aplidがText、sysnameをToolTipに当てたい次第です。

    同じ構造のListの1項目なので取得できるように思ったのですが・・DropDownList2自体は取得できているので、Valueから別にもう一度selectすれば良いのはわかっているのですが、DropDownList用に用意したSqlDataSource2から取得できないかと思っています。(出来ないとはっきりわかれば良いのですがうまい方法があればヒントだけでもいただけたら幸いです)

    よろしくお願いいたします。

    2013年10月31日 6:54
  • 未だにやりたいことがよく理解できていませんが・・・

    > Valueから別にもう一度selectすれば良いのはわかっているのですが、

    質問者さんが分かっておられるなら、ここで聞く必要はなくて、その方向で進めることをお勧めします。


    > DropDownList用に用意したSqlDataSource2から取得できないかと思っています。

    何をどうやっても絶対できないとまで言い切る自信はありませんが、少なくとも(SqlDataSource1 ではなくて)SqlDataSource2 で取得したデータを ToolTip='<%# ????  %>' のようにバインドすることはできません。

    2013年10月31日 7:52