Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Consegui finalmente fazer minha paginação porém ao clicar nos números simplismente não pagina, ao colocar o binder() no Page_Load sem o !Page.IsPostBack e clicar em um link que nao seja os botões da paginação da o seguinde erro:
Argumento de postback ou de retorno de chamada inválido. A validação do evento é habilitada com o uso de <pages enableEventValidation="true"/> na configuração ou <%@ Page EnableEventValidation="true" %> em uma página. Por motivos de segurança, esse recurso verifica se os argumentos para eventos de postback ou de retorno de chamada se originam no controle do servidor que originalmente os processou. Se os dados forem válidos e esperados, use o método ClientScriptManager.RegisterForEventValidation para registrar os dados de postback ou de retorno de chamada para validação.
Não sei onde colocar o binder, pois se coloco dentro do pageLoad funciona a paginação mas os links do datagrid não, e se coloco fora a paginação não funciona mas os links sim.
List.ASPX
<asp:GridView
CssClass="table-list"
ID="gvSession"
runat="server"
AllowPaging="true"
AutoGenerateColumns="false"
EnableViewState="true"
PageSize="2"
AlternatingRowStyle-CssClass="dark"
OnDataBound="gvSession_OnDataBound"
OnRowDataBound="gvSession_OnRowDataBound"
OnPageIndexChanged="gvSession_OnPageIndexChanged"
EmptyDataText="Nenhuma sessão criada."
OnRowCommand="List_Commands">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<input type="checkbox" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chbSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Nome da Sessão">
<ItemTemplate>
<asp:Label ID="lblSessionName" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Sub-Sessões">
<ItemTemplate>
<asp:PlaceHolder ID="phSubSessions" runat="server"></asp:PlaceHolder>
<asp:Label ID="lblSubSessions" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Data de Criação">
<ItemTemplate>
<asp:Label ID="lblDateRegister" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Tipo de Sessão">
<ItemTemplate>
<asp:Label ID="lblSessionType" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderStyle-Width="120" HeaderText="Ações">
<ItemTemplate>
<asp:ImageButton ID="ibView" CommandName="CmsView" ImageUrl="../../app_image/icon/btn-view.png" runat="server" />
<asp:ImageButton ID="ibEdit" CommandName="CmsEdit" ImageUrl="../../app_image/icon/btn-edit.png" runat="server" />
<asp:ImageButton ID="ibDelete" OnClientClick="java script: return confirm('Tem certeza que deseja deletar este item?');" CommandName="CmsDelete" ImageUrl="../../app_image/icon/btn-delete.png" runat="server" />
<asp:ImageButton ID="ibApprove" OnCommand="List_Commands" CommandName="Approve" ImageUrl="../../app_image/icon/btn-approve.png" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerTemplate>
<div class="pagination">
<div class="float-left">
<asp:ImageButton ID="deleteAll" ImageUrl="../../app_image/btn/btn-excluir-selecionados.png" runat="server" />
<asp:ImageButton ID="approveAll" ImageUrl="../../app_image/btn/btn-aprovar.png" runat="server" />
</div>
<div class="float-right">
<asp:Panel runat="server" ID="paginationNavigation"></asp:Panel>
</div>
</div>
</PagerTemplate>
</asp:GridView>
List.ASPX.CS
#region properties
private int _SessionId;
private CmsAction _Action;
public int SessionId
{
get
{
return _SessionId;
}
set
{
_SessionId = value;
}
}
public CmsAction Action
{
get
{
return _Action;
}
set
{
_Action = value;
}
}
#endregion
#region Methods
protected void binder()
{
gvSession.DataSource = CmsSession.Select(LoggedUser.Client);
gvSession.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
VerifyLogin();
if (!Page.IsPostBack)
{
binder();
}
}
protected void gvSession_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView drv = e.Row.DataItem as DataRowView;
Label lblSessionName = e.Row.FindControl("lblSessionName") as Label;
Label lblSubSessions = e.Row.FindControl("lblSubSessions") as Label;
Label lblDateRegister = e.Row.FindControl("lblDateRegister") as Label;
Label lblSessionType = e.Row.FindControl("lblSessionType") as Label;
string idArgument = drv["id"].ToString();
if (lblSessionName != null)
{
lblSessionName.Text = drv["name"].ToString();
}
if (lblSubSessions != null)
{
PlaceHolder phSubSessions = e.Row.FindControl("phSubSessions") as PlaceHolder;
int numSubSessions = CmsSession.GetNumberSubSessions(base.LoggedUser.Client, Convert.ToInt32(drv["id"]));
lblSubSessions.Text = numSubSessions.ToString();
if (numSubSessions > 0)
{
LinkButton lbViewSubSessions = new LinkButton();
lbViewSubSessions.CommandArgument = idArgument;
lbViewSubSessions.CommandName = "ViewSubSessions";
lbViewSubSessions.Command += new CommandEventHandler(this.List_Commands);
phSubSessions.Controls.Add(lbViewSubSessions);
}
}
if (lblDateRegister != null)
{
DateTime dateRegister = Convert.ToDateTime(drv["date_register"].ToString());
lblDateRegister.Text = dateRegister.ToString("d");
}
if (lblSessionType != null)
{
int aux = Convert.ToInt32(drv["id_sessionType"].ToString());
CmsSessionType sessionType = (CmsSessionType)aux;
lblSessionType.Text = Enum.GetName(typeof(CmsSessionType), sessionType);
}
ImageButton ibView = e.Row.FindControl("ibView") as ImageButton;
ImageButton ibEdit = e.Row.FindControl("ibEdit") as ImageButton;
ImageButton ibDelete = e.Row.FindControl("ibDelete") as ImageButton;
ImageButton ibApprove = e.Row.FindControl("ibApprove") as ImageButton;
ibView.CommandArgument = idArgument;
ibEdit.CommandArgument = idArgument;
ibDelete.CommandArgument = idArgument;
ibApprove.CommandArgument = idArgument;
if (Convert.ToInt16(drv["status"]) == 0)
{
ibApprove.ImageUrl = "~/app_image/icon/btn-approve.png";
ibApprove.CommandName = "Approve";
}
else
{
ibApprove.ImageUrl = "~/app_image/icon/btn-reprove.png";
ibApprove.CommandName = "Reprove";
}
}
}
protected void buildPagination(GridViewRow e)
{
System.Web.UI.WebControls.Panel pnl = (System.Web.UI.WebControls.Panel)e.FindControl("paginationNavigation");
if (gvSession.PageIndex > 0)
{
pnl.Controls.Add(new LiteralControl("<div class='float-left'>"));
ImageButton btnPage = new ImageButton();
btnPage.ImageUrl = "~/app_image/btn/btn-voltar.png";
btnPage.ToolTip = "Página Anterior";
btnPage.CommandName = "PagePrev";
btnPage.Command += new CommandEventHandler(List_Commands);
pnl.Controls.Add(btnPage);
pnl.Controls.Add(new LiteralControl("</div>"));
}
pnl.Controls.Add(new LiteralControl("<div class='content'>"));
for (int i = 0; i < gvSession.PageCount; i++)
{
int PageNumber = i + 1;
if (i == gvSession.PageIndex)
{
Label lbPage = new Label();
lbPage.Text = "[" + PageNumber.ToString() + "]";
lbPage.CssClass = "page-index";
pnl.Controls.Add(lbPage);
}
else
{
LinkButton lbPage = new LinkButton();
lbPage.CommandName = "PageGo";
lbPage.Command += new CommandEventHandler(List_Commands);
lbPage.ToolTip = "Ir para a página " + PageNumber.ToString();
lbPage.Text = PageNumber.ToString();
pnl.Controls.Add(lbPage);
}
}
pnl.Controls.Add(new LiteralControl("</div>"));
if ((gvSession.PageIndex + 1) < gvSession.PageCount && gvSession.PageCount > 1)
{
pnl.Controls.Add(new LiteralControl("<div class='float-left'>"));
ImageButton btnPage = new ImageButton();
btnPage.ImageUrl = "~/app_image/btn/btn-avancar.png";
btnPage.CommandName = "PageNext";
btnPage.Command += new CommandEventHandler(List_Commands);
btnPage.ToolTip = "Próxima Página";
pnl.Controls.Add(btnPage);
pnl.Controls.Add(new LiteralControl("</div>"));
}
}
protected void gvSession_OnDataBound(object sender, EventArgs e)
{
GridViewRow gvrPager = gvSession.BottomPagerRow;
if (gvrPager.RowType == DataControlRowType.Pager)
{
buildPagination(gvrPager);
}
}
protected void gvSession_OnPageIndexChanged(Object sender, EventArgs e)
{
binder();
}
protected void List_Commands(object sender, CommandEventArgs e)
{
CmsSession cmsSession;
switch (e.CommandName)
{
case "CmsDelete":
CmsSession.Delete(LoggedUser.Client, Convert.ToInt32(e.CommandArgument));
binder();
showModal("Sucesso", "Item deletado com sucesso", "success");
break;
case "CmsView":
SessionId = Convert.ToInt16(e.CommandArgument);
Action = CmsAction.View;
Server.Transfer("SessionEdit.aspx");
break;
case "CmsEdit":
SessionId = Convert.ToInt16(e.CommandArgument);
Action = CmsAction.Edit;
Server.Transfer("SessionEdit.aspx");
break;
case "Approve":
cmsSession = CmsSession.Select(this.LoggedUser.Client, Convert.ToInt16(e.CommandArgument));
cmsSession.Status = true;
cmsSession.Save();
binder();
showModal("Sucesso", "Item aprovado com sucesso", "success");
break;
case "Reprove":
cmsSession = CmsSession.Select(this.LoggedUser.Client, Convert.ToInt16(e.CommandArgument));
cmsSession.Status = false;
cmsSession.Save();
binder();
showModal("Sucesso", "Item reprovado com sucesso", "success");
break;
case "DeleteAll":
break;
case "ApproveAll":
break;
case "ReproveAll":
break;
case "ViewSubSessions":
break;
case "PageGo": // Ele nao entra aqui
gvSession.PageIndex = Convert.ToInt16(e.CommandArgument)-1;
binder();
break;
case "PageNext": // Ele nao entra aqui
if (gvSession.PageIndex < (gvSession.PageCount - 1))
{
gvSession.PageIndex++;
}
binder();
break;
case "PagePrev": // Ele nao entra aqui
if (gvSession.PageIndex > 0)
{
gvSession.PageIndex--;
}
binder();
break;
}
}
protected void ibNew_Click(object sender, ImageClickEventArgs e)
{
try
{
this._Action = CmsAction.New;
Server.Transfer("SessionEdit.aspx");
}
catch (HttpException ex)
{
Response.Write(ex.StackTrace);
}
}
#endregionCarregando comentários...