如何添加空的第一个条目执行<asp:dropdownlist>?</asp:dropdownlist>

时间:2009-01-13 15:06:40

标签: asp.net data-binding

我有一个下拉列表,我有一个数据源,我将AutoPostBack设置为true
我想在数据源中添加第一个条目,例如“--- select country ---”,选择此条目不会导致回发。
这感觉应该很容易,但我似乎无法找到一个好的解决方案 感谢。

4 个答案:

答案 0 :(得分:16)

在您的aspx页面中(重要的部分是处理DataBound事件并设置CausesValidation =“true”以强制验证下拉列表):

<asp:DropDownList ID="ddlCountries" runat="server" DataSourceID="dsCountries" AutoPostBack="true" OnDataBound="ddlCountries_DataBound" CausesValidation="true" />
<asp:RequiredFieldValidator ID="rfvCountries" runat="server" ControlToValidate="ddlCountries" Display="Dynamic" ErrorMessage="Please select a country." />

在你的代码隐藏中(重要的是插入项的值是String.Empty,以使所需的字段验证器工作!):<​​/ p>

protected void ddlCountries_DataBound(Object sender, EventArgs e)
{
ddlCountries.Items.Insert(0, new ListItem("--- select country ---", String.Empty));
}

注意:如果您不希望显示验证程序的消息,请将“显示”属性设置为“无”。

答案 1 :(得分:5)

您也可以通过设计器手动添加行,但是您必须确保DropDownList的属性AppendDataBoundItems = True,以便将数据绑定行添加到第一行。

答案 2 :(得分:0)

以前的答案处理插入值,但我知道你的问题是AutoPostBack属性。我想你不想回复这个价值,这就是你的问题,我是对的吗?

也许有更好的解决方案,但我建议不要使用AutoPostBack。您可以使用所选的值更改事件自动处理回发。

恕我直言,如果AutoPostBack无法正常工作,那么最好是实施自己的解决方案,在其上加上某种“修补程序”来“修复”它。

希望有所帮助

答案 3 :(得分:0)

使用insert方法,正如其他人建议的那样,在索引0处添加一个值,表示未选中(例如'unknown')。然后使用验证器,添加必需的字段验证器并将InitialValue属性设置为新列表项的值(在我们的示例中为“unknown”)。

将索引0设置为页面加载时的选定项目,如果不回发。

如果用户没有选择其他选项,验证器将阻止回发。

希望这就是你要找的东西。