Элемент управления ASP.NET DataPager в элементе управления сервером
Я пытаюсь создать серверный элемент управления, который будет использовать элемент управления DataPager, но у меня возникли некоторые трудности с PagerTemplate.
Это элемент управления DataPager, который я хочу создать из серверного элемента управления:
<asp:DataPager ID="myPager" PageSize="20" runat="server">
<Fields>
<asp:TemplatePagerField>
<PagerTemplate>
<div class="counter">
<%# Container.StartRowIndex + 1 %> to
<%# ((Container.StartRowIndex + Container.PageSize) > Container.TotalRowCount ? Container.TotalRowCount : (Container.StartRowIndex + Container.PageSize)) %>
of <%# Container.TotalRowCount %> records
</div>
</PagerTemplate>
</asp:TemplatePagerField>
<asp:NextPreviousPagerField ButtonType="link"
FirstPageText="first"
ShowFirstPageButton="true"
ShowNextPageButton="false"
ShowPreviousPageButton="false"
RenderDisabledButtonsAsLabels="true" />
<asp:NumericPagerField ButtonCount="7" />
<asp:NextPreviousPagerField ButtonType="link"
LastPageText="last"
ShowLastPageButton="true"
ShowNextPageButton="false"
ShowPreviousPageButton="false" />
</Fields>
</asp:DataPager>
Я не знаю, как создать PagerTemplate из кода. Я застрял в той части, где мне нужно создать ITemplate, но я не знаю, как с ним работать.
Я провел некоторый поиск, но не нашел ничего, что могло бы мне помочь. Я немного новичок в управлении сервером. Я могу сделать несколько простых, но шаблоны являются новыми для меня.
Кто-нибудь может мне помочь?
Спасибо:)
1 ответ
Вам нужно создать класс, который реализует ITemplate для того, чтобы установить поле шаблона программно. Вот пример:
/// <summary>
/// A template that goes within a data pager template field to display record count information.
/// </summary>
internal class RecordTemplate : ITemplate
{
/// <summary>
/// Instantiates this template within a parent control.
/// </summary>
/// <param name="container"></param>
public void InstantiateIn(Control container)
{
DataPager pager = container.NamingContainer as DataPager;
if (pager != null)
{
pager.Controls.Add(new Literal()
{
Text = String.Format("Showing records {0} to {1} of {2}",
pager.StartRowIndex + 1,
Math.Min(pager.StartRowIndex + pager.PageSize, pager.TotalRowCount),
pager.TotalRowCount)
});
}
}
}
Затем в управляющем коде вашего сервера, где вы создаете DataPager, вы можете сделать следующее:
TemplatePagerField field = new TemplatePagerField();
field.PagerTemplate = new RecordTemplate();
MyDataPager.Fields.Add(field);