0

最初の項目がハードコードされ、他の項目が 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;
4

2 に答える 2

3

データバインドを !Page.IsPostBack に入れます。

ページがポストバックされるたびにすべてが更新されます。これが唯一のリスト アイテム クライアント側であるため、カウントが 1 である理由です。サーバー側に入力されたものはすべて、ポストバックしない必要があります。

If (!Page.IsPostBack)
{
ddlGroup.DataBind();
}
于 2013-07-11T12:38:07.660 に答える
1

これは、 Page.IsPostBackプロパティを に使用していないためだと思いますpage_Load

IsPostBackPage_load のように使用する

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

それがうまくいくことを願っています。

于 2013-07-11T12:44:47.910 に答える