页脚模板中的DropDownList

时间:2014-08-20 20:12:27

标签: c# asp.net

我需要在 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("------", ""));
}

3 个答案:

答案 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("------"));