我正在使用ASP.NET动态数据。在Insert.aspx页面中,我有几个下拉列表要选择。 Dropdown表示的字段是数据库中的必填字段。因此下拉列表不会在下拉列表中显示“选择”作为默认选项。我想在下拉列表中显示的数据库的其他记录顶部添加“选择”选项。请注意,该字段不是必填字段,因此默认情况下,动态数据不会显示“选择”选项。我怎么能做到这一点?
答案 0 :(得分:9)
使用Insert方法绑定下拉列表后添加“select”项:
myDropDownList.DataBind();
// To make it the first element at the list, use 0 index :
myDropDownList.Items.Insert(0, new ListItem("Select", string.Empty));
答案 1 :(得分:1)
我会为Required DropDown字段创建一个自定义FieldTemplate。在控件的OnDataBinding事件期间插入“选择”项。我还有一个客户端RequiredFieldValidator,以确保选择“Select”之外的其他内容,然后才能回发。
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ForeignKeyRequired_Edit.ascx.cs"
Inherits="DDWANorthwind.DynamicData.FieldTemplates.ForeignKeyRequired_Edit" %>
<asp:DropDownList ID="DropDownList1" runat="server" CssClass="droplist">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="DropDownList1" ErrorMessage="Selection Required"></asp:RequiredFieldValidator>
-
protected override void OnDataBinding(EventArgs e)
{
base.OnDataBinding(e);
if (Mode == DataBoundControlMode.Edit)
{
string foreignkey = ForeignKeyColumn.GetForeignKeyString(Row);
ListItem item = DropDownList1.Items.FindByValue(foreignkey);
if (item != null)
{
DropDownList1.SelectedValue = foreignkey;
}
}
else if (Mode == DataBoundControlMode.Insert &&
Column.IsRequired)
{
DropDownList1.Items.Insert(0, new ListItem("Select", ""));
}
}
-
您必须使用UIHint属性,以便在默认情况下使用此FieldTemplate。
答案 2 :(得分:1)
在索引0处添加顶部元素可以正常工作,但LINQ提供了另一种可能性,即返回“select”或“pick something”或“all”作为数据的一部分。下拉列表与此函数数据绑定:
public static List<string> GetRegions()
{
using (NorthwindDataContext nw = new NorthwindDataContext())
{
IQueryable<string> regionQuery = nw.Customers
.Where(c => c.Region != null)
.OrderBy(c => c.Region)
.Select(c => c.Region)
.Distinct();
return (new List<string>() { "All" }).Concat(regionQuery).ToList();
}
}
答案 3 :(得分:0)
//---Populate Category DropDownList
private void getData()
{
var category = (from c in CoffeeContext.tblProductTypes
select new { c.ProductType, c.Description }).ToList();
cbxCategory.DataTextField = "Description";
cbxCategory.DataValueField = "ProductType";
cbxCategory.DataSource = category;
cbxCategory.DataBind();
cbxCategory.Items.Insert(0, "--Select Type--");
cbxCategory.SelectedIndex = 0;
}
答案 4 :(得分:0)
选择前1&#39; 0&#39;作为valueField,&#39; - 选择 - &#39;作为来自dummtable的textField 联盟 从你的表中选择ID,文本
来自后端的控制提供了更大的灵活性