Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

C# -- Recuperando dados do MySQL e ordenando-os em páginas sem DataGridView


Em seus cliques de botão, você atualiza os valores x e y, mas nunca executa novamente a consulta do banco de dados ou atualiza os dados no formulário. Você precisa buscar a próxima "página" de dados para exibi-la.

Primeiro, extraia seu código de banco de dados em um método em vez de no Load evento:
private void LoadData()
{
    server = "localhost";
    database = "app";
    uid = "root";
    password = "root";
    string connectionString;
    connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
    connection = new MySqlConnection(connectionString);
    if (this.OpenConnection() == true)
    {
        string query = "SELECT * from EVENTS LIMIT"+ x +","+ y +";";
        mySqlDataAdapter = new MySqlDataAdapter(query , connection);
        ...
        ...
    }
}

Em seguida, no Load evento defina seu x inicial e y valores e carregue os dados:
private void Form1_Load(object sender, EventArgs e)
{
    x = 0;
    y = 20;
    LoadData();
}

Isso deve carregar a "página" inicial de dados. Então, presumivelmente, você tem um botão "próximo" e "anterior" para paginação? Cada um aumentaria/diminuiria o x e y valores em conformidade. Algo assim:
private void nextButton_Click(object sender, EventArgs e)
{
    x += 20;
    y += 20;
    LoadData();
}

private void previousButton_Click(object sender, EventArgs e)
{
    x -= 20;
    y -= 20;
    LoadData();
}

Indo além, você vai querer adicionar algumas verificações de limites para que as pessoas não possam clicar em "próximo" na última página ou em "anterior" na primeira página. Provavelmente algum tratamento de erros seria uma boa ideia. Há muitas maneiras de polir isso. Mas a ideia básica é que você precisa consultar novamente o banco de dados e religar os controles de formulário a cada página.