Open takachaa opened 7 years ago
参考 http://gomocool.net/gomokulog/?p=332
<form id="form1" runat="server">
<div>
</div>
<asp:DropDownList ID="DropDownList1" runat="server" onselectedindexchanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>
</form>
public partial class WebForm8 : System.Web.UI.Page
{
List<Country> countries = new List<Country>();
List<League> leagues = new List<League>();
List<Team> teams = new List<Team>();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillLists();
//this.DropDownList1.DataSource = countries;
//this.DropDownList1.DataBind();
this.DropDownList1.DataSource = countries;
this.DropDownList1.DataTextField = "Name";
this.DropDownList1.DataValueField = "Id";
this.DropDownList1.DataBind();
}
}
private void FillLists()
{
// Adding some countries.
countries.Add(new Country { Id = 1, Name = "England" });
countries.Add(new Country { Id = 2, Name = "Sweden" });
countries.Add(new Country { Id = 3, Name = "Spain" });
// Adding some leagues with the Id of the country they belong to.
leagues.Add(new League { Id = 1, Name = "Premier League", CountryId = 1 });
leagues.Add(new League { Id = 2, Name = "Championship", CountryId = 1 });
leagues.Add(new League { Id = 3, Name = "Superettan", CountryId = 2 });
leagues.Add(new League { Id = 4, Name = "Allsvenskan", CountryId = 2 });
// Adding some teams with the Id of the league they belong to.
teams.Add(new Team { Id = 1, Name = "Manchester United", LeagueId = 1 });
teams.Add(new Team { Id = 2, Name = "Arsenal", LeagueId = 1 });
teams.Add(new Team { Id = 3, Name = "Crystal Palace", LeagueId = 2 });
teams.Add(new Team { Id = 4, Name = "Watford", LeagueId = 2 });
teams.Add(new Team { Id = 5, Name = "Hammarby", LeagueId = 3 });
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string code = DropDownList1.SelectedValue;
Console.WriteLine(code);
}
}
以下のようにすると、コードビハインドなしでドロップダウンリストの内容を変更すると、テキストボックスの内容が変更される。※AutoPostBackは有効にしてないと動かない
<form id="form1" runat="server">
<!-- スクリプトマネージャー -->
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<!-- ドロップダウンリスト1とラベル1の定義 -->
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
<asp:ListItem Value="1" Text="アイテム1" Selected="True"></asp:ListItem>
<asp:ListItem Value="2" Text="アイテム2"></asp:ListItem>
<asp:ListItem Value="3" Text="アイテム3"></asp:ListItem>
</asp:DropDownList>
<!-- ドロップダウンリスト1が変更された場合は、この部分のみ画面の再描画を行う -->
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<input id="Text1" type="text" value="<%= DropDownList1.SelectedItem.Value + ":" + DropDownList1.SelectedItem.Text %>" />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
上記でも一応動いた、しかしながら、以下を参考に最低限なリストボックスとアップデートパネルの連携は作成すること
参考 [ ASP.NET ] 同期ポストバックと非同期ポストバック ( AutoPostBack / UpdatePanel ) http://hensa40.cutegirl.jp/archives/1497
リストボックス
・キーとバリューが同じ場合は、Valueは省略していい。 ・
SelectionMode="Multiple"
は複数選択可能となる。 ・選択項目の有効/無効 Enabled = "True" ・選択されている Selected = "False"以下のようにすることでAutoPostbackを有効にすることができる。 ※おそらく他のドロップダウンリスト、チェックボックスリスト、ラジオボタンリストも同じく
ドロップダウンリスト
・キーとバリューが同じ場合は、Valueは省略していい。 ・選択項目の有効/無効 Enabled = "True" ・選択されている Selected = "False"
チェックボックスリスト
・キーとバリューが同じ場合は、Valueは省略していい。 ・選択項目の有効/無効 Enabled = "True" ・選択されている Selected = "False"
ラジオボタンリスト
・キーとバリューが同じ場合は、Valueは省略していい。 ・選択項目の有効/無効 Enabled = "True" ・選択されている Selected = "False"
フォーム送信時のバック側処理例