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
还是更填充另一种方式?
解决方案
可以简单地添加一个列表项一> 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: '' } }) });
当然,还有一个服务器侧单向,太。 我不认为这是应对类是一个好主意。 举例来说,我的一切显示的页面是一些类。这个类有几个枚举类型的属性。这将是复制所有这些属性的噩梦,但使他们在一些其他类可为空一些的人在这里提出的计算器。
毕竟,我为什么要改变我的商业逻辑某些特定标记的缘故?相反,我处理通过JavaScript一切,某些型号的检查。
不隶属于 StackOverflow