none
GridViewにて TextBox の値が変わると DropDownList の内容を変更したいのですが・・・ RRS feed

  • 質問

  • GridViewにて TextBox の値が変わると DropDownList の内容を変更したいのですが・・・

    度々質問をさせていただきます。  現在、Visual Web Developer 2008 Express Edition(ASP.NET)のVBで開発を
    行っております開発初心者の BEETLE と申します。宜しくお願いいたします。

    GridView を SqlDataSource を用いて表示しています。 今回、行いたい事は GridView 内の TextBox を変更すると
    それに対応した DropDownList (データバインドしてます) を変更させたいのですが、<SelectParameters> の設定が
    よくわかりません。 GridView でない場合は <asp:ControlParameter ControlID="業者CD">等を記述できましたが
    GridViewの場合、別のコントロールを選択しようと思うのですが、GridView1としか表示してくれません。
    何か手があればと思う次第です・・・^^; 宜しくお願いいたします。

    《ソース》
    <%@ Page Language="VB" MaintainScrollPositionOnPostback=true%>
    <%@ Import Namespace="System.Data.SqlClient" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">
    </script>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title></title>
     
    </head>
    <body>
        <form id="form1" runat="server">
       
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
            DataKeyNames="事業者CD" DataSourceID="SqlDataSource1">
            <Columns>
                <asp:CommandField ShowEditButton="True" />
                <asp:TemplateField HeaderText="事業者CD" SortExpression="事業者CD">
                    <EditItemTemplate>
                        <asp:TextBox ID="txt事業者CD" runat="server" Text='<%# Bind("事業者CD") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lbl事業者CD" runat="server" Text='<%# Bind("事業者CD") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="店舗CD" SortExpression="店舗CD">
                    <EditItemTemplate>
                        <asp:TextBox ID="txt店舗CD" runat="server" Text='<%# Bind("店舗CD") %>'></asp:TextBox>
                        <br />
                        <asp:DropDownList ID="drp店舗" runat="server" AutoPostBack="True"
                            DataSourceID="店舗" DataTextField="名称" DataValueField="店舗CD"
                            SelectedValue='<%# Bind("店舗CD") %>' AppendDataBoundItems="True">
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lbl店舗" runat="server" Text='<%# Bind("店舗CD") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
       
        <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString="<%$ ConnectionStrings:ConnectionStrings %>"
            SelectCommand="SELECT [事業者CD], [店舗CD] FROM Table">
        </asp:SqlDataSource>
       
        <asp:SqlDataSource ID="店舗" runat="server"
            ConnectionString="<%$ ConnectionStrings:ConnectionStrings %>"
           
            SelectCommand="SELECT 事業者CD, 店舗CD, 名称 FROM tbl店舗 WHERE (事業者CD = @事業者CD)"
            ProviderName="System.Data.SqlClient">
            <SelectParameters>
                <asp:ControlParameter ControlID="GridView1" Name="事業者CD"
                    PropertyName="SelectedValue" />
            </SelectParameters>
        </asp:SqlDataSource>
       
        </form>
    </body>
    </html>

    2009年11月4日 11:17

回答

  • 先のスレッド「GridView でデータが無い場合(EmptyDataTemplate)の表示項目の値をとりた
    いのですが・・・」の応用で可能なはずです。

    でも、それ以前の問題があるのではないですか? GridView の Edit Button をクリックして「編
    集」モードにしたとき、DropDownList にその行のデータが選択されて表示されているのでしょう
    か? 答えが No なら、まずそこのところが問題ないようにするのが先だと思います。

    ところで、先のスレッドは2重投稿だったようですね。 

    • 回答としてマーク 菊地俊介 2009年12月10日 8:49
    2009年11月4日 14:18