разбиение на страницы в представлении сетки на основе поля года

#c# #asp.net #sql #gridview

#c# #asp.net #sql #gridview

Вопрос:

Я пытаюсь найти способ просмотра таблицы gridview по годам. В моей базе данных у меня есть поле «сезон», и я хочу, чтобы все данные за 2014 год отображались на одной странице, все данные за 2013 год — на другой и т.д. Это также потребовало бы разного количества строк в зависимости от года.

Комментарии:

1. Не думай, что ты сможешь это сделать. Возможно, загляните в мастер / деталь. Одна сетка со списком лет, а другая сетка для отображения данных за этот год. msdn.microsoft.com/en-us/library/aa581796.aspx

2. Я думал, что, возможно, нет способа сделать это, но это может быть полезно — спасибо

Ответ №1:

Вот как я бы это сделал. Я бы не стал использовать подкачку по умолчанию в gridview для обработки этого. Вместо этого я бы использовал кнопки (или кнопки ссылок) для имитации подкачки страниц, чтобы вы могли управлять подкачкой страниц. Таким образом, вы сможете обрабатывать изменения в year, а также контролировать то, что отображается.

Шаги следующие:

1) Добавьте свой gridview на страницу с большим размером страницы, чтобы отобразить все

 <asp:GridView ID="dgvRequests" runat="server" AutoGenerateColumns="False" PageSize="9999"> </asp:GridView>
 

2) Привяжите к нему данные за год в коде, поскольку вы отображаете все данные за год при загрузке страницы. А также сохранение переменной для отслеживания года

 public int CurrentYear
{
    get {
        if(ViewState["currentYear"] != null)
            return (int)ViewState["currentYear"];
        return 2014; //Default
    }
    set {
        _ViewState["currentYear"]= value;
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        dgvRequests.DataSource = GetYearData(CurrentYear); //Or Your variable
        dgvRequests.DataBind();
        }
}
 

3) Создайте элементы управления для управления страницей. Я использовал кнопки ссылок

 <asp:LinkButton ID="lbtnPrevious" runat="server" OnClick="lbtnPrevious_Click"></asp:LinkButton>
<asp:LinkButton ID="lbtnlNext" runat="server" OnClick="lbtnlNext_Click"></asp:LinkButton>
 

4) При событии щелчка управляйте подкачкой просмотров сетки с помощью события щелчка

 protected void lbtnlNext_Click(object sender, EventArgs e)
{
    dgvRequests.DataSource = GetYearData(  CurrentYear); //Or Your variable
    dgvRequests.DataBind();
}
protected void lbtnPrevious_Click(object sender, EventArgs e)
{
    dgvRequests.DataSource = GetYearData(--CurrentYear); //Or Your variable
    dgvRequests.DataBind();
}
 

Это должно позволить вам, по сути, «перелистывать страницы», используя элементы управления вместо функции подкачки.

** Функция GetYearData — это ваша функция, с помощью которой вы получаете свои данные из

** Вы также можете захотеть отобразить текущий год отображаемых вами данных