我需要在 DropDownList DDL 的开头添加一行为空:
<asp:ListItem Text="------" Value=""></asp:ListItem>
我尝试过使用这两种不同的解决方案但没有成功。
这是我的代码。
解决方案#1
<FooterTemplate>
<asp:DropDownList ID="DDL" runat="server" Font-Bold="true" Font-Size="X-Small">
<asp:ListItem Text="------" Value=""></asp:ListItem>
</asp:DropDownList>
</FooterTemplate>
解决方案#2
if (e.Row.RowType == DataControlRowType.Footer)
{
DropDownList DDL = (DropDownList)e.Row.FindControl("DDL");
sql = " SELECT DISTINCT FROM .....; ";
OdbcCommand cmd = new OdbcCommand(sql);
DDL.DataSource = GetData(cmd);
DDL.DataTextField = "combo";
DDL.DataValueField = "combo";
DDL.DataBind();
DDL.Items.Add(new ListItem("------", ""));
}
答案 0 :(得分:2)
您可以将AppendDataBoundItems
-property设置为true:
<asp:DropDownList ID="DDL" runat="server" AppendDataBoundItems="true" Font-Bold="true" Font-Size="X-Small">
<asp:ListItem Text="------" Value=""></asp:ListItem>
</asp:DropDownList>
这是以声明方式(如上所述)或以编程方式工作:
DropDownList DDL = (DropDownList)e.Row.FindControl("DDL");
DDL.Items.Add(new ListItem("------", ""));
sql = " SELECT DISTINCT FROM .....; ";
OdbcCommand cmd = new OdbcCommand(sql);
DDL.DataSource = GetData(cmd);
DDL.DataTextField = "combo";
DDL.DataValueField = "combo";
DDL.DataBind();
答案 1 :(得分:0)
当您尝试将数据源设置为dropbox时,它会阻止任何添加,因为在默认情况下,add是禁用....只需将此标记添加到您的下拉元素:
<asp:DropDownList AppendDataBoundItems="true" .... >
这意味着下拉列表会将你添加的元素添加到你拥有的数据源
中所以现在我想你提到的两个解决方案将起作用
但是如果你想在后面的代码中写下它,请记住:
dropdown.DataBind();
刷新下拉列表元素。
答案 2 :(得分:0)
此处提供的其他答案的替代方法是沿着您第二次尝试的相同路线。不使用Add()
方法,而是使用Insert()
方法。只需在之后插入另一个项,然后绑定它,为其指定一个特定的索引。在你的情况下,0。
DDL.Items.Insert(0, new ListItem("------"));