在下拉列表中显示不可选择的值

时间:2014-01-24 14:48:07

标签: c# asp.net drop-down-menu default-value

我在很多文件中都有很多下拉列表。我正在尝试编写一个函数,只在每次页面加载时显示“---请选择 - ”作为默认项目 - 在回发后无法选择,因此添加到数据库中,也不会添加到列表中作为新物品,。我不知道如何实现这一目标。相反,我使用插入(我知道是错的),但我不知道哪种方法是正确的。请指教

ASPX

<asp:DropDownList ID="DropDownListVType" runat="server" DataSourceID="SqlDataSourceVesselType"
 DataTextField="Vessel_Type" DataValueField="VType_ID" Width="160px" AutoPostBack="False"
  CausesValidation="True" OnDataBound="ddl_DataBound">

CS ....

PublicFunctions pubvar = new PublicFunctions();

protected void ddl_DataBound(object sender, System.EventArgs e)
    {
           pubvar.ddl_DB(DropDownListVType);


    }

公共职能CS

 public void ddl_DB(DropDownList d)
{
    try
    {
        d.Items.Insert(0, new ListItem("--- Please Select ---", String.Empty));
    }
    catch (Exception ex)
    {
        Console.WriteLine("{0} Exception caught.", ex);
    }

}

更新: 公共职能CS

    public object checkNull (Control c)
    { 
    try{

       if (c.GetType()==typeof(TextBox))
       {
           TextBox tb = c as TextBox;

         if (!string.IsNullOrEmpty(tb.Text))
            {
                return tb.Text;
            }

        }

        if(c.GetType()==typeof(DropDownList))
        {
            DropDownList dl = c as DropDownList;

             if ((!string.IsNullOrEmpty(c.??
            {
                return c.???
            }

        }
    }

    catch (Exception ex)
    {
        Console.WriteLine("{0} Exception caught.", ex);
    }
    return (DBNull.Value);

在PAGE CS中打电话

     command.Parameters.AddWithValue("@VType_ID", DropDownListVType.SelectedValue);

3 个答案:

答案 0 :(得分:1)

好吧......当您将默认选项插入索引0时,您可以执行以下操作:

if(!d.Items[0].Text.equals("--- Please Select ---"))
    d.Items.Insert("--- Please Select ---");

其他什么都不做。或者@Plue提到:

if(!Page.IsPostBack)
    d.Items.Insert(0, new ListItem("--- Please Select ---", String.Empty));

另外,您应该将"--- Please Select ---"移动到常量。

private const string DEFAULTOPTION = "--- Please Select ---";

答案 1 :(得分:1)

尝试将此添加到您的aspx:

<asp:DropDownList ...  AppendDataBoundItems="true">
    <asp:ListItem Text="-Choose car-" disabled="true"/>
</asp:DropDownList>

默认情况下会显示 - 选择汽车 - 。然后,当用户单击ddl时,将无法选择此选项。

不要在代码中插入任何内容。

修改

如果您使用每个回发进行绑定,请尝试将其添加到您的ddl_DB代码中:

d.Items.Insert(0, new ListItem("--- Please Select ---", String.Empty));
d.Items[0].Attributes.Add("disabled", "disabled");

答案 2 :(得分:0)

如果您总是有一个“---请选择---”选项或类似的默认值。您可以随时忽略每个下拉列表中的第一个ListItem。

myDropDown_OnSelectedIndexChanged(...){

    if(myDropDown.SelectedIndex != 0){

    //Do stuff, make database changes, etc

    }

}

如果目标是永远不允许选择此控件,请输入以下内容:

try
{
    if(!IsPostBack){
        ListItem defaultOption = new ListItem("---Please Select---", String.Empty);
        d.Items.Insert(0, defaultOption);
        defaultOption.Attributes.Add( "disabled", "disabled" );
    }
}
catch (Exception ex)
{
    Console.WriteLine("{0} Exception caught.", ex);
}