トップ回答者
DropDownListの使い方

質問
回答
-
DropDownList をデータバインドするか、ListItem を手動で追加するか、どちらか一
方のみにすればうまくいくと思います。前者は、小野さんが言われたように DISTINCT を使って一意な「費目」データを抽出
する方法です。以下のような感じです。AccessDataSource は GridView のものとは別
にします。<asp:AccessDataSource ID="AccessDataSource2" runat="server"
DataFile="~/App_Data/河川工事履歴V6.mdb"
SelectCommand="SELECT DISTINCT [費目] FROM [工事台帳]">
</asp:AccessDataSource>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
DataSourceID="AccessDataSource2" DataTextField="費目" DataValueField="費目">
</asp:DropDownList>後者は以下のような感じです。データバインドはしません(AccessDataSource は使いま
せん)。<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
<asp:ListItem>改修</asp:ListItem>
<asp:ListItem>維持</asp:ListItem>
<asp:ListItem>災害</asp:ListItem>
</asp:DropDownList>- 回答としてマーク taka_toshi 2011年7月15日 6:15
すべての返信
-
-
コードは以下のようになっています。
現在DropDownListをクリックすると、”改修”だけが数千表示されます。
<ListItemを作成したあとのプログラムの作り方に問題があると思います。
すみませんお恥ずかしいことにプログラムの作り方自体が分かりません。サイトでいろいろ調べたのですがわかりませんでした。
よろしくお願いします。
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="工事台帳ID" DataSourceID="AccessDataSource1">
<Columns>
<asp:BoundField DataField="工事台帳ID" HeaderText="工事台帳ID" InsertVisible="False"
ReadOnly="True" SortExpression="工事台帳ID" />
<asp:BoundField DataField="費目" HeaderText="費目" SortExpression="費目" />
<asp:BoundField DataField="工事名称" HeaderText="工事名称" SortExpression="工事名称" />
<asp:BoundField DataField="工事概要" HeaderText="工事概要" SortExpression="工事概要" />
</Columns>
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="~/App_Data/河川工事履歴V6.mdb"
SelectCommand="SELECT [工事台帳ID], [費目], [工事名称], [工事概要] FROM [工事台帳] WHERE ([費目] = ?)">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="費目"
PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:AccessDataSource>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
DataSourceID="AccessDataSource1" DataTextField="費目" DataValueField="費目">
<asp:ListItem>改修</asp:ListItem>
<asp:ListItem>維持</asp:ListItem>
<asp:ListItem>災害</asp:ListItem>
</asp:DropDownList>
</form>
</body> -
DropDownList をデータバインドするか、ListItem を手動で追加するか、どちらか一
方のみにすればうまくいくと思います。前者は、小野さんが言われたように DISTINCT を使って一意な「費目」データを抽出
する方法です。以下のような感じです。AccessDataSource は GridView のものとは別
にします。<asp:AccessDataSource ID="AccessDataSource2" runat="server"
DataFile="~/App_Data/河川工事履歴V6.mdb"
SelectCommand="SELECT DISTINCT [費目] FROM [工事台帳]">
</asp:AccessDataSource>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
DataSourceID="AccessDataSource2" DataTextField="費目" DataValueField="費目">
</asp:DropDownList>後者は以下のような感じです。データバインドはしません(AccessDataSource は使いま
せん)。<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
<asp:ListItem>改修</asp:ListItem>
<asp:ListItem>維持</asp:ListItem>
<asp:ListItem>災害</asp:ListItem>
</asp:DropDownList>- 回答としてマーク taka_toshi 2011年7月15日 6:15