在DropDown中添加“选择”项

时间:2009-09-21 10:21:58

标签: asp.net dynamic-data

我正在使用ASP.NET动态数据。在Insert.aspx页面中,我有几个下拉列表要选择。 Dropdown表示的字段是数据库中的必填字段。因此下拉列表不会在下拉列表中显示“选择”作为默认选项。我想在下拉列表中显示的数据库的其他记录顶部添加“选择”选项。请注意,该字段不是必填字段,因此默认情况下,动态数据不会显示“选择”选项。我怎么能做到这一点?

5 个答案:

答案 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,文本

来自后端的控制提供了更大的灵活性