用于将更多数据加载到DatagridView的按钮,超过20000个寄存器C#

时间:2018-11-23 15:13:35

标签: c# sql sql-server

我很喜欢。

我正在尝试使用以下代码加载数据:

        SqlConnection con = new SqlConnection(Login.conectData);
        con.Open();
        DataSet dsFabricantes = new DataSet();
        SqlDataAdapter daFabricantes = new SqlDataAdapter("SELECT TOP 100 * FROM 
        Fabricantes", con);
        dsFabricantes.Clear();

        //prencher a tabela
        daFabricantes.Fill(dsFabricantes, "Fabricantes");
        tabelaFabricantes.DataSource = dsFabricantes;
        tabelaFabricantes.DataMember = "Fabricantes";


        //para mudar o que está escrito no cabeçalho das colunas

        tabelaFabricantes.Columns[1].HeaderCell.Value = "Nome do 
         Fabricante";
        tabelaFabricantes.Columns[2].HeaderCell.Value = "Observações";

        con.Close();
        tabelaFabricantes.ClearSelection();

我想创建一个按钮以在我的datagridView中加载更多的寄存器。该应用程序的加载我只更改100个寄存器。我的问题是:

如何在onClickbutton上添加一个按钮,我的dataGrideView,加载更多100个寄存器等

小帮助 谢谢 布鲁奥里·何塞

1 个答案:

答案 0 :(得分:0)

您需要动态调整SqlDataAdapter()调用。

首先在page / formOnLoad方法上设置一些全局变量

global int startRow = '1';
global int maxColRank = testMaxRows();


#set left button active = false
leftButton.Active = false;

为此,请分别对DataGridViewLoader进行分类,以不接受任何参数。将类命名为mySqlGridViewLoaderClass() 在本课程的开头输入以下值:

string MaximumRows = '100';
string StartRowIndex = StartRow.ToString();

在此DataGridViewLoader的SQL连接器中,使用类似于

的查询
SELECT colRank, col1, col2
FROM
   (SELECT col1, col2,
       ROW_NUMBER() OVER(ORDER BY col2 DESC) AS colRank
    FROM Fabricantes
   ) AS rowNumQuery
WHERE colRank > <i>StartRowIndex</i> AND
      colRank <= (<i>StartRowIndex</i> + <i>MaximumRows</i>
   )

您的类应执行DataGridView加载操作,然后为MAX(colRank)返回第二个标量值。

#new connector
SqlDataAdapter daFabricantes = new SqlDataAdapter("SELECT Max(colRank) FROM 
    (SELECT max(colRank)
FROM
   (SELECT col1, col2,
       ROW_NUMBER() OVER(ORDER BY col2 DESC) AS colRank
    FROM Fabricantes
   ) AS rowNumQuery
WHERE colRank > <i>StartRowIndex</i> AND
      colRank <= (<i>StartRowIndex</i> + <i>MaximumRows</i>
   ))", con2);
int mr = (Int32) con2.ExecuteScalar();
return mr;

对第二个SQL连接器加载程序进行分类,以测试最大行数并返回标量值。将类命名为testMaxRows() 在sql连接器中,使用类似以下查询:

 Select count(col1) DIST from fabricantes;

将计数返回到tr变量。 maxRows类的最后两行应为:

int tr = (Int32) con.ExecuteScalar();
return tr;

在表单设计器中,为“ <”和“>”创建一个按钮 将<按钮设置为无效。 >按钮处于活动状态

在“ <” ButtonOnClick()事件中:

rightButton.Active = true;
if (StartRow != '1') 
{
     StartRow -= 100;

     # your class expects a return value, so we'll initialize one
     int mr = (Int32) mySqlGridViewLoaderClass();

     if (StartRow == 1) 
     {
         leftButton.Active = false;
     }
}

在“>” ButtonOnClick()事件中:

leftButton.Active = true;

StartRow += 100;
int maxRank = (Int32) mySqlGridViewLoaderClass();

if ( maxRank >= maxColRank)
{
    rightButton.Active = false;

}