PageIndexИзменяющиеся проблемы - PullRequest
2 голосов
/ 27 июня 2019

Событие GridView 'Sqldata' PageIndexChanging, которое не было обработано. Как справиться с этим?

protected void Sqldata_PageIndexChanging(object sender, GridViewPageEventArgs e)
  {
      Sqldata.PageIndex = e.NewPageIndex;
      Sqldata.DataBind();
  }

и

<-asp:GridView  ID="Sqldata" runat="server" autoGenerateColumns ="False" ShowFooter ="True" showHeaderWhenEmpty="True" EmptyDataText="Dado Não Encontrado" AllowPaging="True"              
              Width="1100px" Height="350px" CssClass="auto-style5" Font-Names="Arial" HorizontalAlign="Center" PageSize="20">

Полный код

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.ComponentModel;



namespace WebApplication5
{
    public partial class Lis_Mov_Admin : System.Web.UI.Page
    {
        //Connection String,  criada pelo web form Configuração. (Caminho do servidor. EX: Data Source = Nome/SQLEXPRESS; Initial Catalog = table; user Id = sa; password = 1234) 
        string connection = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (Session["Nome"].ToString() == "SuperAdministrador") //Para poder usar o super-administrador criado em código...
                {
                    Label2.Text = Session["Nome"].ToString();
                }
                else if (Session["Nome"] != null && Session["Funcao"].ToString() == "1")// Evitar que o utilizador navegue via URL e verificando se o nome está vazio ou funcao diferente da do site
                {
                    Label2.Text = Session["Nome"].ToString();
                }
                else
                {
                    Response.Redirect("Login.aspx");
                    Label2.Text = Session["Nome"].ToString();
                }
            }
            catch (Exception)
            {
                Response.Redirect("Login.aspx");//Se o utilizador arrancar com esta página é rederecionado para a página login (ou então dava erro)
            }
            if (!IsPostBack)//Verifica se a página foi carregada a primeria vez ou não
            {
                populateGridView();//Variavél Criada do tipo void
            }
        }
         public void populateGridView()
        {
            DataTable dtbl = new DataTable();
            using (SqlConnection sqlCon = new SqlConnection(connection))
            {
                sqlCon.Open();
                SqlDataAdapter sqlDa = new SqlDataAdapter("SELECT  * FROM Movimentos", sqlCon);//Mostra os dados inseridos na tabela referida
                sqlDa.Fill(dtbl);
            }
            if (dtbl.Rows.Count > 0)
            {
                Sqldata.DataSource = dtbl;
                Sqldata.DataBind();
            }
            else
            {
                dtbl.Rows.Add(dtbl.NewRow());
                Sqldata.DataSource = dtbl;
                Sqldata.DataBind();
                Sqldata.Rows[0].Cells.Clear();
                Sqldata.Rows[0].Cells.Add(new TableCell());
                Sqldata.Rows[0].Cells[0].ColumnSpan = dtbl.Columns.Count;
                Sqldata.Rows[0].Cells[0].Text = "Não foi encontrado dados...";
                Sqldata.Rows[0].Cells[0].HorizontalAlign = HorizontalAlign.Center;
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Lis_Mov_Admin.aspx"); //Mostrar tudo
        }


        protected void Button3_Click(object sender, EventArgs e)
        {
            //Pesquisa os dados da tabela usando textbox

            string filter = "";
            string command = "SELECT * FROM Movimentos WHERE";


            if (textDataMovimento.Text != "")
            {
                filter = filter + "[Data Movimento] LIKE '%" + textDataMovimento.Text + "%' AND";
            }
            if (textDataValor.Text != "")
            {
                filter = filter + " [Data Valor] LIKE '%" + textDataValor.Text + "%' AND";
            }
            if (textDescricao.Text != "")
            {
                filter = filter + " [Descricao] LIKE '%" + textDescricao.Text + "%' AND";
            }
            if (textValor.Text != "")
            {
                filter = filter + " [Valor] LIKE '%" + textValor.Text + "%' AND";
            }
            if (textTipodeMovimento.Text != "")
            {
                filter = filter + " [Tipo de Movimento] LIKE '%" + textTipodeMovimento.Text + "%'AND";
            }
            if (filter.Length > 0)
            {
                Sqldata.DataSource = SqlDataSource1;
                string FinalFilter = filter.Remove(filter.Length - 3);
                SqlDataSource1.SelectCommand = command + FinalFilter;
                Sqldata.DataBind();
            }
            else
            {
                Sqldata.DataBind();
            }
        }
        public override void VerifyRenderingInServerForm(System.Web.UI.Control control)
        {
            //confirms that an HtmlForm control is rendered for the
            //specified ASP.NET server control at run time.
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Response.ClearContent();
            Response.AppendHeader("content-disposition", "attachment; filename=register.xls");
            Response.ContentType = "applicantion/excel";
            StringWriter ad = new StringWriter();
            HtmlTextWriter sd = new HtmlTextWriter(ad);
            Sqldata.RenderControl(sd);
            Response.Write(ad.ToString());
            Response.End();
        }
        protected void myButton_1_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Imp_Mov_Admin.aspx");
        }
        protected void myButton_2_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Imp_Doc_Admin.aspx");
        }
        protected void myButton_3_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Lis_Mov_Admin.aspx");
        }
        protected void myButton_4_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Lis_Doc_Admin.aspx");
        }
        protected void myButton_6_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Dados_Sinc_Admin.aspx");
        }
        protected void myButton_5_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Dados_Nao_Admin.aspx");
        }
        protected void myButton_7_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Criar_Contas_Admin.aspx");
        }
        protected void mybutton_8_Click(object sender, EventArgs e)
        {
            Session["Nome"] = null;
            Response.Redirect("~/Login.aspx");
        }
        protected void Sqldata_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            Sqldata.PageIndex = e.NewPageIndex;
            Sqldata.DataSource= sqlCon ;
            Sqldata.DataBind();
            DataBind();

        }
    }    
}

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Надеюсь, вам нужно внести небольшое изменение в Sqldata_PageIndexChanging

Удалить следующие две строки

Sqldata.DataSource= sqlCon ; Sqldata.DataBind();

и добавьте populateGridView метод ниже к Sqldata.PageIndex = e.NewPageIndex;

1 голос
/ 27 июня 2019

Следуя комментариям, я опишу здесь шаги для подведения итогов:

В html вы должны убедиться, что 'onpageindexchanging' ссылается на ваш метод, как этот onpageindexchanging = "Sqldata_PageIndexChanging".

В вашем методе 'Sqldata_PageIndexChanging' вы должны убедиться, что ваши данные возвращаются в сетку.Глядя на свой код, вы изначально заполняете сетку данных, используя метод populateGridView.Предполагая, что данные, привязанные к gridview в этом методе, являются источником данных, который вам нужен, вы должны разделить часть этого, которая получает данные и помещает их в таблицу данных, чтобы на них можно было ссылаться в другом месте.В качестве альтернативы, если данные не изменяются, вы можете сохранить их в глобальной переменной и ссылаться на них там, где они вам нужны.В конечном счете, в вашем методе 'Sqldata_PageIndexChanging' вам нужно установить DataSource следующим образом:

protected void Sqldata_PageIndexChanging(object sender, GridViewPageEventArgs e)
 {
    Sqldata.PageIndex = e.NewPageIndex;
    Sqldata.DataSource= //your data source whether from global variable or new method;
    Sqldata.DataBind();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...