将数据集加载到C#的下拉列表中

3
我在我的弹出函数中有一个下拉列表,它没有加载我想要的数据,我已经设置了断点并确认我得到了我想要的数据,但由于某种原因,下拉列表仍然是空的。
C#:
protected void Page_PreRender(object sender, EventArgs e)
{
    var nodes = _administrationSystem.GetNodes(); //The dataset with data
    var translators = _phonesSystem.GetPhoneNumberTranslators(); //The dataset with data

    if (rptList.Items.Count > 0)
    {
        for (var count = 0; count < rptList.Items.Count; count++)
        {
            var ddlNodeEdit = (DropDownList)rptList.Items[count].FindControl("ddlNodeEdit");
            var ddlTranslatorEdit = (DropDownList)rptList.Items[count].FindControl("ddlTranslatorEdit");

            ddlNodeEdit.DataSource = nodes;
            ddlNodeEdit.DataTextField = "NodeName";
            ddlNodeEdit.DataValueField = "ID";
            ddlNodeEdit.DataBind();
            ddlNodeEdit.Items.Insert(0, new ListItem("TRNSLTChoose node", "0"));

            ddlTranslatorEdit.DataSource = translators;
            ddlTranslatorEdit.DataTextField = "Description";
            ddlTranslatorEdit.DataValueField = "ID";
            ddlTranslatorEdit.DataBind();
            ddlTranslatorEdit.Items.Insert(0, new ListItem("TRNSLTChoose numbertranslator", "0"));
        }
    }
}

ASPX:

<asp:Repeater runat="server" OnItemCommand="rptList_OnItemCommand" ID="rptList">
    <HeaderTemplate>
        <table class="tblRegister">
            <tr class="tblRowHeader" style="background-color: rgb(200,200,200)">
                <th>
                    <asp:Label runat="server" Text="TRNSLTFirstname" />
                </th>
                <th>
                    <asp:Label runat="server" Text="TRNSLTSurname" />
                </th>
                <th>
                    <asp:Label runat="server" Text="TRNSLTNode index" />
                </th>
                <th>
                    <asp:Label runat="server" Text="TRNSLTNumber translation" />
                </th>
                <th>
                    <asp:Label runat="server" Text="TRNSLTEmail" />
                </th>
                <th colspan="3">
                    <asp:Label runat="server" Text="TRNSLTLast login" />
                </th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
            <%# OperatorId.HasValue && OperatorId == Convert.ToInt32(Eval("ID"))? "<tr style='background-color: #94C5E1;'>" : "<tr>" %>
                <td>
                    <%# Eval("FirstName") %>
                </td>
                <td>
                    <%# Eval("SurName") %>
                </td>
                <td>
                    <%# Eval("NodeIndex") %>
                </td>
                <td>
                    <%# Eval("TranslatorName") %>
                </td>
                <td>
                    <%# Eval("EMail") %>
                </td>
                <td>
                    <%# Eval("LastLogin") %>
                </td>
                <td>
                    <asp:LinkButton ToolTip="TRNSLTDelete" ID="btnDelete" CssClass="deleteOperator" runat="server" CommandName="deleteBtn" CommandArgument='<%# Eval("ID") %>' OnClientClick="return OpenPopup(this)">
                        <asp:Image ImageUrl="Images/Icons/Deleted-16x16.png" ID="DeleteVisitor" runat="server" />
                    </asp:LinkButton>
                    <div id="myModal" class="modal">
                        <div class="modal-content">
                            <h3 class="modalHdr">
                                <asp:Label runat="server" Text="TRNSLTRemove users" />
                            </h3>
                            <asp:LinkButton ToolTip="TRNSLTNo" CommandName="noBtn" CommandArgument='<%# Eval("ID") %>' ID="ButtonNo" runat="server" Text="TRNSLTNo" CssClass="popupConfirm" />
                            <asp:LinkButton ToolTip="TRNSLTYes" CommandName="yesBtn" CommandArgument='<%# Eval("ID") %>' ID="ButtonYes" runat="server" Text="TRNSLTYes" CssClass="popupConfirm" />
                        </div>
                    </div>
                </td>
                <td>
                    <asp:LinkButton CommandName="selectBtn" ToolTip="TRNSLTEdit" ID="btnEdit" CssClass="editOperator" runat="server" CommandArgument='<%# Eval("ID")%>' OnClientClick="return PopupEdit(this)">
                        <asp:Image ImageUrl="Images/Icons/Edit-16x16.png" ID="EditVisitor" runat="server" />
                    </asp:LinkButton>
                    <div id="modalEdit" class="modal">
                        <div class="modal-content">
                            <p style="margin-left: 50px;">
                                <img src="Images/Icons/Sip.png" alt="" />
                                <%# Eval("FirstName") %> <%# Eval("SurName") %>
                            </p>
                            <br />
                            <asp:DropDownList CssClass="ddlNodeClass" runat="server" ID="ddlNodeEdit" />
                            <asp:DropDownList CssClass="ddlTranslatorClass" runat="server" ID="ddlTranslatorEdit" />
                            <asp:LinkButton ToolTip="TRNSLTCancel" CommandArgument='<%# Eval("ID") %>' ID="btnNo" runat="server" CssClass="btnCancelClass" OnClientClick="return Cancel(this)">
                                <asp:Image ImageUrl="Images/Icons/Cancel-22x22.png" ID="SaveContact" runat="server" ClientIDMode="Static" />
                            </asp:LinkButton>
                            <asp:LinkButton ToolTip="TRNSLTSave" CommandName="submitBtn" CommandArgument='<%# Eval("ID") %>' ID="btnYes" runat="server" CssClass="btnSaveClass">
                                <asp:Image ImageUrl="Images/Icons/Check-22x22.png" ID="SaveOperator" runat="server" ClientIDMode="Static" />
                            </asp:LinkButton>
                        </div>
                    </div>
                </td>
            </ItemTemplate>
            <FooterTemplate>
        </table>
            </FooterTemplate>
</asp:Repeater>

是的,那并没有帮助。我尝试了 AutoPostBack="True",但仍然没有任何作用。 - Malphai
你尝试在 page_load 事件中实现它了吗? - hdkhardik
是的,我做了,也不起作用。 - Malphai
你在循环内部获取了控制权吗? - hdkhardik
是的,代码后台一切正常。 - Malphai
显示剩余2条评论
1个回答

1

试试这个

protected void Page_PreRender(object sender, EventArgs e)
{
        var nodes = _administrationSystem.GetNodes(); //The dataset with data
        var translators = _phonesSystem.GetPhoneNumberTranslators(); //The dataset with data

        if (rptList.Items.Count > 0)
        {
            for (var count = 0; count < rptList.Items.Count; count++)
            {
                var ddlNodeEdit = (DropDownList)rptList.Items[count].FindControl("ddlNodeEdit");
                var ddlTranslatorEdit = (DropDownList)rptList.Items[count].FindControl("ddlTranslatorEdit");

                ddlNodeEdit.DataSource = nodes.Tables[0];
                ddlNodeEdit.DataTextField = "NodeName";
                ddlNodeEdit.DataValueField = "ID";
                ddlNodeEdit.DataBind();
                ddlNodeEdit.Items.Insert(0, new ListItem("TRNSLTChoose node", "0"));

                ddlTranslatorEdit.DataSource = translators.Tables[0];
                ddlTranslatorEdit.DataTextField = "Description";
                ddlTranslatorEdit.DataValueField = "ID";
                ddlTranslatorEdit.DataBind();
                ddlTranslatorEdit.Items.Insert(0, new ListItem("TRNSLTChoose numbertranslator", "0"));
            }
        }
}

.aspx 页面作为返回

<asp:UpdatePanel ID="UpdatePanel1" runat="server">        
    <ContentTemplate>
        <asp:Repeater runat="server" OnItemCommand="rptList_OnItemCommand" ID="rptList">
            <HeaderTemplate>
                <table class="tblRegister">
                    <tr class="tblRowHeader" style="background-color: rgb(200,200,200)">
                        <th>
                            <asp:Label runat="server" Text="TRNSLTFirstname" />
                        </th>
                        <th>
                            <asp:Label runat="server" Text="TRNSLTSurname" />
                        </th>
                        <th>
                            <asp:Label runat="server" Text="TRNSLTNode index" />
                        </th>
                        <th>
                            <asp:Label runat="server" Text="TRNSLTNumber translation" />
                        </th>
                        <th>
                            <asp:Label runat="server" Text="TRNSLTEmail" />
                        </th>
                        <th colspan="3">
                            <asp:Label runat="server" Text="TRNSLTLast login" />
                        </th>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <%# OperatorId.HasValue && OperatorId == Convert.ToInt32(Eval("ID"))? "<tr style='background-color: #94C5E1;'>" : "<tr>" %>
                <td>
                    <%# Eval("FirstName") %>
                </td>
                <td>
                    <%# Eval("SurName") %>
                </td>
                <td>
                    <%# Eval("NodeIndex") %>
                </td>
                <td>
                    <%# Eval("TranslatorName") %>
                </td>
                <td>
                    <%# Eval("EMail") %>
                </td>
                <td>
                    <%# Eval("LastLogin") %>
                </td>
                <td>
                    <asp:LinkButton ToolTip="TRNSLTDelete" ID="btnDelete" CssClass="deleteOperator" runat="server" CommandName="deleteBtn" CommandArgument='<%# Eval("ID") %>' OnClientClick="return OpenPopup(this)">
                        <asp:Image ImageUrl="Images/Icons/Deleted-16x16.png" ID="DeleteVisitor" runat="server" />
                    </asp:LinkButton>

                </td>
                <td>
                    <asp:LinkButton CommandName="selectBtn" ToolTip="TRNSLTEdit" ID="btnEdit" CssClass="editOperator" runat="server" CommandArgument='<%# Eval("ID")%>' OnClientClick="return PopupEdit(this)">
                        <asp:Image ImageUrl="Images/Icons/Edit-16x16.png" ID="EditVisitor" runat="server" />
                    </asp:LinkButton>

                </td>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>     
  </ContentTemplate>
</asp:UpdatePanel>
                    <div id="modalEdit" class="modal">
                        <div class="modal-content">
                            <p style="margin-left: 50px;">
                                <img src="Images/Icons/Sip.png" alt="" />
                                <%# Eval("FirstName") %> <%# Eval("SurName") %>
                            </p>
                            <br />
                            <asp:DropDownList CssClass="ddlNodeClass" runat="server" ID="ddlNodeEdit" />
                            <asp:DropDownList CssClass="ddlTranslatorClass" runat="server" ID="ddlTranslatorEdit" />
                            <asp:LinkButton ToolTip="TRNSLTCancel" CommandArgument='<%# Eval("ID") %>' ID="btnNo" runat="server" CssClass="btnCancelClass" OnClientClick="return Cancel(this)">
                                <asp:Image ImageUrl="Images/Icons/Cancel-22x22.png" ID="SaveContact" runat="server" ClientIDMode="Static" />
                            </asp:LinkButton>
                            <asp:LinkButton ToolTip="TRNSLTSave" CommandName="submitBtn" CommandArgument='<%# Eval("ID") %>' ID="btnYes" runat="server" CssClass="btnSaveClass">
                                <asp:Image ImageUrl="Images/Icons/Check-22x22.png" ID="SaveOperator" runat="server" ClientIDMode="Static" />
                            </asp:LinkButton>
                        </div>
                    </div>

                    <div id="myModal" class="modal">
                        <div class="modal-content">
                            <h3 class="modalHdr">
                                <asp:Label runat="server" Text="TRNSLTRemove users" />
                            </h3>
                            <asp:LinkButton ToolTip="TRNSLTNo" CommandName="noBtn" CommandArgument='<%# Eval("ID") %>' ID="ButtonNo" runat="server" Text="TRNSLTNo" CssClass="popupConfirm" />
                            <asp:LinkButton ToolTip="TRNSLTYes" CommandName="yesBtn" CommandArgument='<%# Eval("ID") %>' ID="ButtonYes" runat="server" Text="TRNSLTYes" CssClass="popupConfirm" />
                        </div>
                    </div>

在databind()事件代码之后,检查给定下拉列表的项目数量。 - hdkhardik
是的,我得到了正确的数量。ddlNode 为4,ddlTranslator 为14。 - Malphai
我认为你需要从那里移除模态框,你应该使用Update Panel并在其中放置一个Repeater控件,同时将所有模态框保持在Update Panel之外。 - hdkhardik
我无法移除模态框,我的设计需要有弹出窗口。 - Malphai
你不需要删除它,而是需要将它放在 Update Panel 之外,并将 Repeater Control 放在 Update Panel 内部。 - hdkhardik
请您能否创建一篇带有代码的文章,并向我展示您的意思? - Malphai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接