下拉列表项计数正在运行

时间:2013-07-11 12:30:05

标签: c# asp.net

我有一个下拉列表,其中第一项是硬编码的,另一项是由sql数据源绑定的。现在在C#代码上我想要这个下拉列表的项目计数,我总是得到1(第一个硬编码列表项)。而这个下拉列表正确显示浏览器上的所有列表项。我无法理解确切的问题。

<asp:DropDownList ID="ddlGroup" runat="server" DataSourceID="dsGroupListByUserId"
     Width="100px" DataTextField="GroupName" DataValueField="GroupID" AppendDataBoundItems="True">
    <asp:ListItem Value="0">N/A</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="dsGroupListByUserId" runat="server" ConnectionString="<%$ ConnectionStrings:EMSsql %>" SelectCommand="GetGroup_ByEventID" SelectCommandType="StoredProcedure" >
    <SelectParameters>
        <asp:SessionParameter DefaultValue="0" Name="EventID" SessionField="EventID" Type="Int64" />
    </SelectParameters>
</asp:SqlDataSource>

这就是我试图获取项目数量的方法 -

int ItemsCount = ddlGroup.Items.Count;

2 个答案:

答案 0 :(得分:3)

将您的数据绑定放入!Page.IsPostBack。

每次页面回发时,所有内容都会刷新,这就是为什么你的计数为1,因为它是唯一的列表项客户端。任何填充的服务器端都需要不回发。

If (!Page.IsPostBack)
{
ddlGroup.DataBind();
}

答案 1 :(得分:1)

我认为这是因为您没有将Page.IsPostBack属性用于page_Load

IsPostBack用于Page_load,如

private void Page_Load()
{
    if (!IsPostBack)
    {
         // Bind your dropdown.
    }
}

希望它适合你。