#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 — это ваша функция, с помощью которой вы получаете свои данные из
** Вы также можете захотеть отобразить текущий год отображаемых вами данных