我有一个下拉列表,它动态填充SQL Server中的数据,我想在数据绑定后手动在DDL上插入两个项目。所以,DDL会有类似这样的数据:
选择分支(手动插入)
ALL(手动插入)
AIR
AMP
ABG
......
我尝试使用以下代码实现它:
ddlBranch.Items.Insert(0, "Select Branch")
ddlBranch.Items(0).Value = CMM.sExcVal1
ddlBranch.Items.Insert(1, "ALL")
ddlBranch.Items(1).Value = "ALL"
但它给出了这样的数据:
选择分支(手动插入)
ALL(手动插入)
('AIR'分支应该在这里,但它已经消失了)
AMP
ABG
...
手动将'ALL'项目插入DDL后,'AIR'消失,已被'ALL'取代。如何从服务器保留所有数据,同时我可以手动插入两个项目?
答案 0 :(得分:6)
这比你想象的要简单得多。您需要做的就是更改html代码,如下所示:
<asp:DropDownList ID="dropdownlist1" runat="server" AppendDataBoundItems="true">
<asp:ListItem>Select Branch</asp:ListItem>
<asp:ListItem>ALL</asp:ListItem>
</asp:DropDownList>
重要的是 AppendDataBoundItems =“true”位,它会在两个条目之后追加将从SQL Server返回的其余项目(不管你做了)手动键入。
希望有所帮助。
Ash(英国)。
答案 1 :(得分:0)
跳过自动数据绑定。
if (!IsPostBack)
{
list.Items.Clear();
list.Items.Add(new ListItem("Select branch", ""));
list.Items.Add(new ListItem("ALL", "*");
// ----- Just bind your items here from the DB.
foreach (var item in yourCollection)
{
ListItem li = new ListItem(item.Text, item.Value);
list.Items.Add(li);
}
}
答案 2 :(得分:0)
或者,如果您在应用程序的许多位置都需要此占位符项,则可能需要创建一个继承自DropDownList的Component。然后,覆盖DataBind方法 -
public override void DataBind()
{
base.DataBind();
ListItem li = new ListItem { Value = String.Empty, Text = "[Select an item ...]" };
this.Items.Insert(0, li);
}