ASP.NET でデータバインドされたドロップダウン リストの初期値を設定するにはどうすればよいですか?
たとえば、値が欲しいのですが、表示する最初の値は --- 1 つを選択 --- し、null 値にする必要があります。
ASP.NET でデータバインドされたドロップダウン リストの初期値を設定するにはどうすればよいですか?
たとえば、値が欲しいのですが、表示する最初の値は --- 1 つを選択 --- し、null 値にする必要があります。
あなたがやりたいことはこれだと思います:
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="--Select One--" Value="" />
</asp:DropDownList>
「AppendDataBoundItems」がtrueに設定されていることを確認してください。そうしないと、データをバインドするときに「--Select One--」リスト項目がクリアされます。
ドロップダウン リストの 'AutoPostBack' プロパティを true に設定している場合は、'CausesValidation' プロパティもtrueに設定する必要があります。次に、'RequiredFieldValidator' を使用して、'--Select One--' オプションが無効であることを確認してください。ポストバックを引き起こしません。
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1"></asp:RequiredFieldValidator>
これが古いことは知っていますが、これらのアイデアを組み合わせると、非常にエレガントなソリューションにつながります。
DropDownList のすべての既定のプロパティ設定を保持します (AppendDataBoundItems=false、Items は空)。次に、DataBound イベントを次のように処理します。
protected void dropdown_DataBound(object sender, EventArgs e)
{
DropDownList list = sender as DropDownList;
if (list != null)
list.Items.Insert(0, "--Select One--");
}
おまけに、この 1 つのハンドラーを任意の数の DropDownList オブジェクトで共有したり、すべてのプロジェクトの汎用ユーティリティ ライブラリに配置したりできます。
私がすることは、ドロップダウンリストをデータバインドした後にドロップダウンリストのテキストプロパティを設定することです。このようなもの:
protected void LoadPersonComboBox()
{
var p = new PeopleBLL();
rcmbboxEditPerson.DataSource = p.GetPeople();
rcmbboxEditPerson.DataBind();
rcmbboxEditPerson.Text = "Please select an existing person to edit...";
}
これにより、このドロップダウンの初期表示値が表示されますが、実際にはドロップダウンの一部ではなく、選択可能でもありません。
私はこれがすでに選ばれた答えを持っていることを知っています - しかし、私は私の2セントを投げたいと思っていました. データバインドされたドロップダウン リストがあります。
<asp:DropDownList
id="country"
runat="server"
CssClass="selectOne"
DataSourceID="country_code"
DataTextField="Name"
DataValueField="CountryCode_PK"
></asp:DropDownList>
<asp:SqlDataSource
id="country_code"
runat="server"
ConnectionString="<%$ ConnectionStrings:DBConnectionString %>"
SelectCommand="SELECT CountryCode_PK, CountryCode_PK + ' - ' + Name AS N'Name' FROM TBL_Country ORDER BY CountryCode_PK"
></asp:SqlDataSource>
コードビハインドには、これがあります-(デフォルトで米国を選択します):
if (this.IsPostBack)
{
//handle posted data
}
else
{
country.SelectedValue = "US";
}
ページは、selectedIndex を気にするのではなく、「US」の値に基づいて最初に読み込まれます (別の項目がデータ テーブルに追加された場合はどうなりますか? 再コーディングする必要はありません)。
こんにちは友人この場合、使用できます
AppendDataBound="true"
この後、リスト項目を使用します。例:
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="--Select One--" Value="" />
</asp:DropDownList>
しかし、これの問題は、2回目の選択データが古いデータに追加された後です。
ドロップダウンから値を選択するには、次のようにインデックスを使用します。
私たちが持っている場合
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
あなたが使用します:
DropDownList1.Items[DropDownList1.SelectedIndex].Value
これは、選択されたインデックスの値を返します。
dropdownlist.Items.Insert(0, new Listitem("--Select One--", "0");