FormView内に設置したDropDownList1を選択すると他項目を表示したい

このQ&Aのポイント
  • FormView内に設置したDropDownList1を選択すると、同テーブルの他項目を表示したいです。
  • Visual Studio Developer2008(VB)とSQL Server 2008を使用しています。FormView内に設置したDropDownList1を選択すると、同テーブルの他項目が表示されるようにしたいです。
  • また、EditItemTempleteでもDropDownList1を選択すると、同テーブルの内容を確認できるようにしたいと思っています。
回答を見る
  • ベストアンサー

FormView内に設置したDropDownList1を選択すると同テ

FormView内に設置したDropDownList1を選択すると同テーブルの他項目を表示したい ASPの初心者です。VisualStadioDeveloper2008(VB)とSQLServer2008の組み合わせで 質問です。 FormView内に設置したDropDownList1を選択すると同テーブルの他項目を表示されるようにしたいです。 また、EditItemTempleteでもDropDownList1を選択すると同テーブル内容を確認できるようにしたいと思ってます。 以下は例です。 例) テーブルA 社員ID,社員名、社員カナ、社員携帯番号 sqldatasouce1にテーブルAをSELECT * FROM [テーブルA]としています。 また社員名をDropDownList1で選択できるようにしています。(下記はEditItemTemplete) <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True" DataSourceID="SqlDataSource1" DataTextField="社員名" DataValueField="社員ID" SelectedValue='<%# Bind("社員ID") %>' AutoPostBack="True"></asp:DropDownList> FormView内のDropDownList1の社員名を選択すると他ラベルにて社員カナ、社員携帯などが表示されるようにしたいです。 更新時に、社員名を選択すれば、他情報が確認できるようにしたいです。(テーブルAは他でメンテする仕様です) GOOGLE等で調べてみましたが、DROPDOWNLIST同士を連携する記事は見つけることはできましたが、上記にような記事を探すことができませんでした。(簡単すぎて書いてないだけでしょうか、、?) 以上の点 教えていただけますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tochansa
  • ベストアンサー率76% (23/30)
回答No.2

where句のところは、(DropdownList1,SqlDataSource2,FormView2)が前回書いておいたような配置になっていれば、 提示いただいた画像のソースのところでControlを選択すると右上のパラメータのプロパティにDropdownList1を含むドロップダウンがが出てくるはずです。 ここでDropdownList1を選択して追加を押してやれば、画面下のwhere句のところにSQL式と値(DropdownList1.SelectedValue)が出てきます。 あとは、OKして先に進めば良いです。 sqlDataSource1とsqlDataSource2に直接の関係は無くて、sqlDataSource1で作成したドロップダウンリストでユーザが値を選択することによって、sqlDataSource2が選択された社員データを持ってくるイメージです。 で、この社員さんのドロップダウンリストを選択するとそのデータがきちんとFormView2に表示されるようでしたら、 SqlDataSource2,FormView2をまるまるFormView1のItemTemplateとEditItemTempleteの部分(たぶんDropdownList1が既に設置されているところですよね?)に入れて下さい。コピペとかカット&ペーストで簡単にいけると思いますよ

momonova
質問者

お礼

ご指摘のように試行錯誤してみました。以下のようにするとできましたので、メモします。 1.SqlDataSource1 でSELECT * FROM [T_test] 2.Formview1配置(データソースはSqlDataSource1 ) 3.FormView1内にdropDownList1を配置(データソースはSqlDataSource1 表示は社員名) 4.FormView1内にSqlDataSource2を配置。SELECT [社員カナ][社員携帯]FROM [T_test] WHERE ([社員ID] = @社員ID) 5.FormView1内FormView2を配置 ItemTemplete内にSqlDataSource2,FormView2を配置しないといけないのがポイントと分かりました。 御丁寧なフォローありがとうございました。おかげでシステム完成できそうです^^

その他の回答 (1)

  • tochansa
  • ベストアンサー率76% (23/30)
回答No.1

んーと、、、、ややこしい感じがするのでので切り分けて。 まずは単純にDropDownList1で選択した社員さんのデータをFormView2に表示する仕組みを考えます。 SqlDataSource2を用意して、取得したいフィールド(社員カナ,社員携帯番号あたりかな?)を選択し、Where句でDropDownList1の社員さんのIDとくっつけて下さい。 下記のような感じの並びになると思います。 <asp:DropDownList ID="DropDownList1" ...></asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource2"...></asp:SqlDataSource> <asp:FormView ID="FormView2" runat="server" DataSourceID="SqlDataSource2"...> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# bind("社員カナ") %>'></asp:Label> <asp:Label ID="Label2" runat="server" Text='<%# bind("社員携帯番号") %>'></asp:Label> </ItemTemplate> </asp:FormView> こいつがまともに動くようでしたら、 FormView1(でいいのかな?)のItemTemplateとEditItemTempleteに突っ込んでみて下さい。 以上です。頑張って下さい。

momonova
質問者

補足

回答ありがとうございます。 >Where句でDropDownList1の社員さんのIDとくっつけて下さい。 というところがわかりませんでした。最初の質問のところに写真を添付してます。 どの項目を選択すればよいのか、、、わかりません。 またFormView1内で動作を行いたいと思ってます。 FormView1内のDropDownList1を選択したら、他項目も同Form内に表示したいです。 以下現在の状況です。FormView1にDqlDataSource(SELECT * FROM [T_test])をすべて展開した べたな状態です。そこへDropDOwnList1を追加だけです。他Sqldatasource2のSELECT文が分からない状態かなと思っています。sqlDataSource1とsqlDataSource2の連携(Dropdownlist)がわかりません。 なお、別例としてGridView内の項目からhyperlinkにて該当列をするやり方はわかってます。 説明が下手で申し訳ございませんが、よろしくお願いします。 =================================================== <ItemTemplate> 社員ID:<asp:Label ID="社員IDLabel" runat="server" Text='<%# Bind("社員ID") %>' /> <br /> 社員名:<asp:Label ID="社員名Label" runat="server" Text='<%# Bind("社員名") %>' /> <br /> 社員カナ:<asp:Label ID="社員カナLabel" runat="server" Text='<%# Bind("社員カナ") %>' /> <br /> 社員携帯番号:<asp:Label ID="社員携帯番号Label" runat="server" Text='<%# Bind("社員携帯番号") %>' /><br /> <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="社員名" DataValueField="社員ID"> </asp:DropDownList> <br /> <br /> <br /> </ItemTemplate> </asp:FormView>

関連するQ&A

  • DropDownList に指定した値を表示したい

    <開発環境>asp.net A画面のgridviewで指定されたkeyの詳細情報をB画面のgridviewで表示しています。 B画面ではgridviewのTemplateFieldにDropDownListを作成しています。 DropDownListはSqlDataSourceをバインドさせているのですが、A画面でデータを選択し 修正ボタンを押下した時にB画面のDropDownListに初期表示する方法がわかりません。 どのようにすれば表示できるのでしょうか? ちなみにA画面でKBNNAMEが"愛知県"だとB画面で"愛知県"と表示したいです。 -------------------------------------------------------------------------------- <asp:GridView ID="grdList" CssClass="list" runat="server" AutoGenerateColumns="False" DataSourceID="sqldsList"> <Columns> <ItemTemplate> <asp:DropDownList CssClass="cnbstr" ID="cnbBB_KBN" runat="server" DataSourceID="sqldscnb1" DataTextField="KBNNAME" DataValueField="KBNORDER" AutoPostBack="True"></asp:DropDownList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> -------------------------------------------------------------------------------- <asp:SqlDataSource ID="sqldscnb1" runat="server" ConnectionString="<%$ ConnectionStrings:InformationUseConnectionString %>" SelectCommand="SELECT KBNORDER, KBNNAME FROM table1 WHERE (NO = @NO) AND (ITEMNO = @ITEMNO) ORDER BY KBNORDER" DeleteCommandType="StoredProcedure"> <SelectParameters> <asp:SessionParameter Name="NO" SessionField="BBList_NO" Size="2" Type="String" /> <asp:Parameter DefaultValue="01" Name="ITEMNO" Size="2" Type="String" /> </SelectParameters> </asp:SqlDataSource>

  • DropDownListの表示に列連結した文字を表示

    VisualStudio2005で開発しています。 DropDownListの表示に列連結した文字("ORG_ID"&"SHORT_OU_JA")を表示したいのですが、下記ではエラーとなってしまいます。 どのように設定したらよいでしょうか? <asp:DropDownList ID="DropDownList1" unat="server" DataSourceID="SqlDataSource1" DataTextField="ORG_ID"&"SHORT_OU_JA" DataValueField="ORG_ID"> </asp:DropDownList><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:meldandyConnectionString %>" SelectCommand="SELECT ORG_ID, SHORT_OU_JA FROM meldandy.WF_ORGANIZATION"></asp:SqlDataSource>

  • Panelを重ねる方法

    VWD2008にて登録画面を作成している者です。 ご助言いただけると助かります。 やりたい事としては、 DropDownListでAが選択されたら下にA専用の登録画面(テーブルA)を表示させる。 Bが選択されたら下にB専用の登録画面(テーブルB)を表示させる、というものです。 テーブルの表示位置をAでもBでも同じ位置にしたいため、PanelA・PanelBを重ねて、 PanelAにテーブルAを・PanelBにテーブルBを配置し、 DropDownListでA選択時には、PanelA Visible=true、PanelB Visible=False、 B選択時にはPanelA Visible=False,PanelB Visible=True, というロジックで切り替えを行おうと考えています。 【疑問点】 パネルを重ねようとすると下記のように入れ子になってしまう。 →同じ位置にテーブルを表示させることができない。 <asp:Panel ID="PanelA" runat="server"> <asp:Panel ID="PanelB" runat="server"> </asp:Panel> </asp:Panel> 何か良い解決策は無いでしょうか? Panelにこだわっている訳ではないので、別のコントロールで実現可能ならそちらでもかまいません。 よろしくお願いいたします。

  • 【ASP.NET】 DataTextFieldの値を取得する方法について

    お世話になります。ASP.NETに関する質問です。 画面に配置したDropDownListコントロールの値を取得した際、 各DropDownListに設定したDataTextFieldの値を取得したいのですが、 (例) [DropDownList_A の設定値] --------------------------- DataTextField: "0" DataValueField: "男性" DataTextField: "1" DataValueField: "女性" ----------------------------------------------------- 例えば、 画面からDropDownList_Aの選択肢より、"男性"を選択するとします。 内部処理にて、DropDownListの選択値をDropDownList.textで取得します。 ただし、このままですと、"男性"という値が取得されてしまいますが、目的としては"男性"の付加情報とする"0"という値を取得したいのです。 目的を達成するための方法について、どなたかご教授願えますでしょうか?

  • ASP.Net DropDownList 不明値

    大変お世話になります。 ASP.Net 初心者でございます。 データソースのある GridView の1つの項目が DropDownList になっております。 このDropDownList のデータの元になるテーブルがあるのですが、 運営上の問題で一部のデータを消す事があります。 そうなると、本データ上にはある過去の値が、現在の DropDownList のデータには無い事があるのです。そういうデータを GridView で表示すると、次のような・・・ 【項目一覧に存在しないため、'DropDownList1' に SelectedValue を指定することは無効です】 というエラーになってしまうのですが、何か良い方法はないでしょうか? DropDownList のデータ 1:青森 2:山形 3:岩手 4:NewYork ・・・・・ このデータは既にDropDownList のテーブル上にはありません。 本データの DropDownList 項目のデータ 1:青森 2:山形 3:岩手 -------------------------------------------------- 4:NewYork ・・・・・ このデータが出てくるとエラーになります。(このデータは本データにある) -------------------------------------------------- こういう場合は、本データにあって、DropDownList データには無いデータをあらかじめ取得して、 AppendDataBoundItems か何かで、追加する必要があるのでしょうか? 何卒よろしくお願いいたします。

  • ボタンクリック処理前にDropDownListの選択内容確認の仕方は?

    ボタンをクリックする前に、DropDownListの値を確認するダイアログのようなものを出したいと考えています。 OnClientClickプロパティに"return confirm('これでよろしいですか?')" のように埋め込む方法は分かっていますが、 DropDownListで選択されている値を取り出して return confirm('" + ddlSelect.SelectedValue + "でよろしいですか?')" のようにするとそのまま出力されてしまい、中身を取り出せません。 何か、方法もしくは他の方法で、DropDownListの値を一言注意できる方法があれば教えて下さい。 環境:VWD2008 ASP.NET2.0

  • FormView から別画面でカレンダーを開き、値を前の画面に戻したい

    以下の環境で開発を行っております。 Windows XP(Professional) Visual Web Developer 2008 Express Edition Internet Explorer 8 【質問】 FormView ではなくて Form から別画面でカレンダーを開き値を戻す事はできたのですが、FormView を使った画面からデータを戻すことができず、エラーがでてしまいます。構文が間違っているのでしょうか? 【test.aspx】 <html> <head> <title>日付テスト</title> <script language="javascript" type="text/javascript"> function calendarPicker(strField) { window.open('DatePicker.aspx?field=' + strField, 'calendarPopup', 'width=250,height=220,resizable=yes'); } </script> </head> <body> <form id="Form1" method="post" runat="server"> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStrings %>"> </asp:SqlDataSource> <asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1"> <ItemTemplate> 日付:<asp:TextBox ID="TextBox" runat="server" style="text-align: center"></asp:TextBox> <a href="javascript:;" onclick="calendarPicker('Form1.FormView1.TextBox');">▼</a><br /> </ItemTemplate> </asp:FormView> </form> </body> </html> 【DatePicker.aspx.vb】 Private Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs) Handles Calendar1.DayRender e.Cell.Controls.Clear() Dim Link As System.Web.UI.HtmlControls.HtmlGenericControl Link = New System.Web.UI.HtmlControls.HtmlGenericControl Link.TagName = "a" Link.InnerText = e.Day.DayNumberText Link.Attributes.Add("href", String.Format("JavaScript:window.opener.document.{0}.value = '{1:d}'; window.close();", Request.QueryString("field"), e.Day.Date)) If e.Day.IsSelected Then Link.Attributes.Add("style",Me.Calendar1.SelectedDayStyle.ToString()) End If e.Cell.Controls.Add(Link) End Sub

  • ASP.Net DropDownList表値取得2

    ASP.Net DropDownList 表値取得 大変お世話になります。 DropDownList の DataTextField のリストに出てくる値を取得したいのですが、フィールド名しか取得できません。サイトでくぐっても、SelectedIndex から取得できましたとの回答はあったのですが、実際どうやったら良いかわかりません。 DataTextField.text や DataTextField.Value のようなやりかたがあればいいのですが、 よろしくお願いいたします。 なお、リストに表示してある値が変更される場合があるのです。 ですが、SelectValue での集計もあるので、SelectValue と DataText は同じにできないのです。 できれば DataTextField の項目名ではなく、値そのものを取得できる方法をお教え下さいませ。

  • GridView でコンボボックスの設定

    再質問をさせていただきます。 gridviewを作成しました。 -------------------------------------------------------------------------------- <asp:GridView ID="grdList" runat="server" DataSourceID="sqldsList"> <Columns> <asp:BoundField DataField="ITEMNO" HeaderText="ITEMNO"></asp:BoundField> <asp:TextBox ID="txtNAME" runat="server" Text='<%# Bind("ITEM_NAME") %>'></asp:TextBox> <ItemTemplate>   <asp:DropDownList CssClass="cnbstr" ID="cnb_KBN" runat="server"     DataSourceID="sqldscnb1" DataTextField="NAME" DataValueField="NO" AutoPostBack="True"></asp:DropDownList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> -------------------------------------------------------------------------------- このコンボボックスに値を設定させたいのですが、ITEMNO="01"の時だけ、txtNAMEの値を初期表示したいと思っています。 RowDataBound、RowCreatedで可能かと思ったのですができずに困っています。 どなたかご教授お願いします。 Protected Sub grdList_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdList.RowDataBound   If e.Row.RowType = DataControlRowType.DataRow Then     IF DataBinder.Eval(e.Row.DataItem, "ITEMNO").ToString() = "01" THEN       Dim dlist As DropDownList = DirectCast(e.Row.FindControl("cnb_KBN"), DropDownList)       dlist.SelectedValue = "ITEM_NAME" ←こんな感じのことをしたい     ELSE       設定しない     END IF   End If End Sub

  • SqlDataSource1のドロップダウンリストにページロード時に値

    SqlDataSource1のドロップダウンリストにページロード時に値をいれたいのですが どのようにしたらいいのでしょうか? SqlDataSource にDropDownList1と同じ内容のデータベース 1 りんご 2 みかん 3 ぶどう でページロード時3を指定しているようにしたいのですが 下記ではDropDownList1はできるのですがSqlDataSourceを使っているDropDownList2 では 項目一覧に存在しないため、'DropDownList2' に SelectedValue を指定することは無効です。 パラメータ名: value というエラーがになってしまいます。 どうしたらできるでしょうか? <%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) DropDownList1.Text = "3" DropDownList2.Text = "3" End Sub </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <div> <asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem>りんご</asp:ListItem> <asp:ListItem>みかん</asp:ListItem> <asp:ListItem>ぶどう</asp:ListItem> </asp:DropDownList> <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="SqlDataSource1" DataTextField="MyLike" DataValueField="NO"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommand="SELECT [NO], [MyLike] FROM [MyLike]"></asp:SqlDataSource> </div> </form> </body> </html>

専門家に質問してみよう