有2个下拉列表问题

时间:2011-07-08 18:08:30

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

我有2个下拉列表,我需要一个默认值才能显示为第1项,但 ddlSize 中的一个未获得默认值,我还尝试创建2个单独的函数 TypeColor & TypeSize但它没有帮助,任何建议?感谢:

 &nbsp;<asp:DropDownList ID="ddlColor" OnDataBinding='<%# TypeSelection((int)Eval("ProductID")) %>' runat="server" Width="109">
   <asp:ListItem Value="Select Color&nbsp;&nbsp;"></asp:ListItem>
   </asp:DropDownList>
   <br />
   &nbsp;<asp:DropDownList ID="ddlSize" OnDataBinding='<%# TypeSelection((int)Eval("ProductID")) %>' runat="server" Width="109">
   <asp:ListItem Value="Select Size&nbsp;&nbsp;"></asp:ListItem>
   </asp:DropDownList>


  protected string TypeSelection(int pID)
        {
            DropDownList ddlColor = (DropDownList)FormView_Product.Row.Cells[0].FindControl("ddlColor");
            DropDownList ddlSize = (DropDownList)FormView_Product.Row.Cells[0].FindControl("ddlSize");
            CommerceEntities db = new CommerceEntities();

            ddlColor.DataSource = from p in db.ProductTypes
                                 where p.ProductID == pID
                                  orderby p.Color 
                                 select new { p.ProductID, p.Color };
            ddlColor.DataTextField = "Color"; 
            ddlColor.Items.Insert(0, new ListItem("Select Color", "NA")); //----->Default value

            ddlSize.DataSource = from p in db.ProductTypes
                                 where p.ProductID == pID
                                 orderby p.Size descending
                                 select new { p.ProductID, p.Size };
            ddlSize.DataTextField = "Size";
            ddlSize.Items.Insert(0, new ListItem("Select Size", "NA")); //----->Default value(can't get this into the DDL.)

            return null;
        }

3 个答案:

答案 0 :(得分:2)

你可以这样做。

<asp:DropDownList runat="server" ID="ddl" AppendDataBoundItems="true">
        <asp:ListItem Value="0" Text="Default Value"></asp:ListItem>
</asp:DropDownList>

这样,默认项目将在绑定后保留在那里。

答案 1 :(得分:1)

在插入默认值之前调用ddlSize.DataBind();。 e.g。

ddlSize.DataTextField = "Size";
ddlSize.DataBind(); // Add this
ddlSize.Items.Insert(0, new ListItem("Select Size", "NA"));

第二件事与你的问题无关,但我需要告诉你,你不需要定义你的方法return type as String.因为你没有从这个方法返回任何值,所以只需要创建这个方法{ {1}}

答案 2 :(得分:0)

在插入默认项目之前,尝试调用ddlSize.DataBind()和ddlColor.DataBind()。

ddlColor.DataSource = ...
ddlColor.DataTextField = "....";
ddlColor.DataBind();
ddlColor.Items.Insert(0, new ListItem("Select Color", "NA"));

等等......