我有一个下拉列表,其中第一项是硬编码的,另一项是由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;
答案 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.
}
}
希望它适合你。