在一个 asp.net 页面上工作时,我创建了一个自定义 ajax Web 用户控件,该控件显示列表值的内容(通过数据库调用加载)。该控件包括“下一个”和“上一个”按钮,以及几个文本框。我的初始版本使用会话变量(迭代器)来跟踪用户在单击按钮并使用 List[] 中的值填充文本框时的位置。
在我的下一次迭代中,我需要能够使用这个自定义控件,它将在表格(或者更可能是网格)中多次显示,但是我无法弄清楚如何处理迭代器,因为会话变量显然将不再工作。
有没有人有建议的方法或推荐的文章?
在一个 asp.net 页面上工作时,我创建了一个自定义 ajax Web 用户控件,该控件显示列表值的内容(通过数据库调用加载)。该控件包括“下一个”和“上一个”按钮,以及几个文本框。我的初始版本使用会话变量(迭代器)来跟踪用户在单击按钮并使用 List[] 中的值填充文本框时的位置。
在我的下一次迭代中,我需要能够使用这个自定义控件,它将在表格(或者更可能是网格)中多次显示,但是我无法弄清楚如何处理迭代器,因为会话变量显然将不再工作。
有没有人有建议的方法或推荐的文章?
我通过在我的用户控件上创建第二个表单来解决这个问题,该表单与 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>
希望其他一些小伙伴发现这种方法很有用。