0

在一个 asp.net 页面上工作时,我创建了一个自定义 ajax Web 用户控件,该控件显示列表值的内容(通过数据库调用加载)。该控件包括“下一个”和“上一个”按钮,以及几个文本框。我的初始版本使用会话变量(迭代器)来跟踪用户在单击按钮并使用 List[] 中的值填充文本框时的位置。

在我的下一次迭代中,我需要能够使用这个自定义控件,它将在表格(或者更可能是网格)中多次显示,但是我无法弄清楚如何处理迭代器,因为会话变量显然将不再工作。

有没有人有建议的方法或推荐的文章?

4

1 回答 1

0

我通过在我的用户控件上创建第二个表单来解决这个问题,该表单与 UpdatePanel 中包含的控件分离。在刷新这些控件之前,隔离控件(在这种情况下为标签)以编程方式分配一个值,并且当控件 Page_Load 事件触发时,它引用隔离标签值以跟踪其当前位置。我还必须将 ScriptManager 从我的控件中移出并将其放置在将使用该控件的页面上,因为页面上将有几个这样的自定义用户控件,并且每个页面只允许一个 ScriptManager。

<form id="NaviControl" >


<asp:UpdatePanel runat="server">
    <ContentTemplate>
        <asp:Panel ID="controlsPanel" runat="server" HorizontalAlign="Center" >
            <asp:Panel ID="Panel1" runat="server" > 
                <asp:Button ID="btnLast" runat="server" Text="Previous" Height="25px" Width="75px" OnClick="btnLast_Click" />
                <asp:TextBox ID="tbStatusCode" runat="server" ></asp:TextBox>
            </asp:Panel>
            <asp:Panel ID="Panel2" runat="server" HorizontalAlign="Center" >
                <asp:TextBox ID="tbDescription" runat="server"  ></asp:TextBox>
                <asp:Button ID="btnNext" runat="server" Text="Next" Height="25px" Width="75px" OnClick="btnNext_Click" />
            </asp:Panel>
        </asp:Panel>
    </ContentTemplate>
</asp:UpdatePanel>
</form>
<form>
<asp:Label ID="lblCounter" runat="server" visible="false" />
</form>

希望其他一些小伙伴发现这种方法很有用。

于 2013-09-25T16:05:13.460 回答