我有2个下拉列表,我需要一个默认值才能显示为第1项,但 ddlSize 中的一个未获得默认值,我还尝试创建2个单独的函数 TypeColor & TypeSize但它没有帮助,任何建议?感谢:
<asp:DropDownList ID="ddlColor" OnDataBinding='<%# TypeSelection((int)Eval("ProductID")) %>' runat="server" Width="109">
<asp:ListItem Value="Select Color "></asp:ListItem>
</asp:DropDownList>
<br />
<asp:DropDownList ID="ddlSize" OnDataBinding='<%# TypeSelection((int)Eval("ProductID")) %>' runat="server" Width="109">
<asp:ListItem Value="Select Size "></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;
}
答案 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"));
等等......