asp.netのドロップダウンリスト - デシベル値の前に空白行を追加します。
-
13-09-2019 - |
質問
私のページでは、私は(以下のコードを参照してください)私はDropDownList
からデータベースの値を取り込むSqlDataSource
を持っています。
はどのような値の前に私自身のテキストまたは空白行を追加することができますか?
<asp:DropDownList ID="drpClient" runat="server" Width="200px"
AutoPostBack="True" DataSourceID="dsClients" DataTextField="name"
DataValueField="client_id">
</asp:DropDownList>
<asp:SqlDataSource ID="dsClients" runat="server"
ConnectionString="my_connection_string"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [client_id], [name] FROM [clients]">
</asp:SqlDataSource>
感謝します。
P.S。あなたがSqlDataSource
を使用することをお勧めしたり、それがより良い別の方法を埋めるためにあるのですか?
解決
あなたは、単にのListItem を追加することができますA> DropDownListのマークアップの内部。データソースからのすべての値は、後に追加されます。
<asp:DropDownList ID="drpClient" runat="server" Width="200px"
AutoPostBack="True" DataSourceID="dsClients" DataTextField="name"
DataValueField="client_id" AppendDataBoundItems="true">
<asp:ListItem>-- pick one --</asp:ListItem>
</asp:DropDownList>
他のヒント
<asp:DropDownList ID="drpClient" runat="server" Width="200px"
AutoPostBack="True" DataSourceID="dsClients" DataTextField="name"
DataValueField="client_id" AppendDataBoundItems="True">
<asp:ListItem Text="" Value="" />
</asp:DropDownList>
これは欠場するのは簡単ですので、私は追加AppendDataBoundItems
属性を忘れないでください。
私は本当にこれをテストしていませんが、私はあなたがドロップダウンリストにバインドされている後にアイテムを追加することができると仮定しています。あなたはこの空のボックスを追加したい任意のドロップダウンリストに、このイベントを追加することができます。
protected void DropDownList_DataBound(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
ListItem emptyItem = new ListItem("", "");
ddl.Items.Insert(0, emptyItem);
}
私は空のオプションを追加することを選択し、コマンドを変更解くます:
<asp:SqlDataSource ID="dsClients" runat="server"
ConnectionString="my_connection_string"
ProviderName="System.Data.SqlClient"
SelectCommand="SELECT [client_id], [name] FROM [clients] union SELECT NULL, '--- pick one ----' ">
</asp:SqlDataSource>
ご挨拶!!!
私のかみそりスタイルの実装では、このようになります
@Html.EnumDropDownListFor(
model => model.Privilege.Role,
"-- Select role --",
new
{
@style = "width: 216px !important",
@class = "form-control",
id = "role",
required = "required"
})
とJavaScriptでロード上で実行されて、私はこれを持っています:
function PutDefaultPrivilegePanelListHints() {
$('#role').val('');
...
}
控えめな検証(HTML5にはカウントしない)を介して、より柔軟な解決策もあります:
$('.required').each(function () { $(this).rules('add', { required: true, messages: { required: '' } }) });
もちろん、あまりにも、サーバー側のチェックがあります。 私はそれがクラスに対処するのは良いアイデアだとは思いません。 例えば、私は、ページに表示すべては、いくつかのクラスです。このクラスは、いくつかの列挙型プロパティを持っています。すべてのこれらのプロパティを複製する悪夢が、いくつかのものはstackoverflowの上、ここで示唆したように、いくつかの追加のクラスでそれらがNULL可能で作るだろう。
すべての後に、なぜ私はいくつかの特定のマークアップのために私のビジネスロジックを変更する必要がありますか?代わりに、私はJavaScriptといくつかのモデルの確認を経て、すべてを扱うます。