分页——在c#中列出数据表中以前的一组值

本文关键字:一组 分页 数据表 | 更新日期: 2023-09-27 18:02:37

我持有一个名为temptable的临时数据表,它保存了大约22行,它已经在数据网格中显示在每页的5条记录中,考虑我在第三页,现在只有2条记录,如果我点击上一个按钮,我需要显示上一组(15-20)5个值,如果我点击上一个,它应该显示(10 - 15)5个值等等。

我已经粘贴了我的代码在这里。这里的问题是,我只能检索前5个值,我的意思是15 - 20 ..我需要把它变成通用的,但是我不能从中得到灵感

   private void PreviousSelect_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
      {
        TempTable.Clear();
  /* if Total_Temp_Table_rowCount is 22 int a  will be ' 2 ' and
     int b will return 20 */
        int  a = Total_Temp_Table_rowCount % 5;
        int  b = Total_Temp_Table_rowCount- a;
        for (int s = b-1 ; s >= b - 5; s--)
        {
            fieldLabel = (string)selectedFieldsTable.Rows[s]["Field Name"].ToString();
            fieldType = (string)selectedFieldsTable.Rows[s]["Field Type"].ToString();
            DataRow newRows = TempTable.NewRow();
            newRows["Field Name"] = fieldLabel;
            newRows["Field Type"] = fieldType;
            TempTable.Rows.Add(newRows);
            Console.WriteLine(selectedFieldsTable.Rows[s]["Field Name"].ToString());  
        }          
        dgvSelectedFieldsView.DataSource = TempTable;
    }
有谁能帮帮我吗谢谢! !

分页——在c#中列出数据表中以前的一组值

虽然您可以使用DataPager,但如果您手动实现它,则需要考虑以下几点:

  • 页大小
  • 当前页
  • TotalPages

从这些你可以跟踪当前的记录集填充在dataGridView。

看我下面的逻辑:你可能需要微调循环的开始和结束点。但它应该给你一个想法。

public int currentPage =0;
public int totalPages=0;
public int pageSize=5;
public DataTable tempDt = new DataTable();
public void LoadGrid()
{
    //calculate the total number of pages..
    double result = (double)selectedFieldsTable.Rows.Count/pageSize;
    if(result>(selectedFieldsTable.Rows.Count/pageSize))
        ++result;
    totalPages = result;

         foreach (DataColumn col in selectedFieldsTable.Columns)
         {
            tempDt.Columns.Add(col);
         }
        BindGrid();
}
在Page 的Page_Load事件中调用LoadGrid()

这是你以前的LinkButton事件

private void PreviousSelect_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    currentPage--;
   if(currentPage<0)
   {
        (sender as LinkButton).Enabled=false;
   }    
   else
   {
        BindGrid();
    }
}

这是你的下一个链接按钮事件

private void NextSelect_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    currentPage++;
   if(currentPage>=PageSize)
   {
        (sender as LinkButton).Enabled=false;
   }    
   else
   {
        BindGrid();
    }
}
这是你的BindGrid()
pubilc void BindGrid()
{
    tempDt.Clear();
    for(int i=(currentPage*pageSize);i<(currentPage*pageSize)+pageSize; i++)
    {
        DataRow row =  tempDt.NewRow();
       foreach(DataColumn col in tempDt.Columns)
       {
          row[col] = selectedFieldsTable.Rows[i][col];
       } 
       tempDt.Rows.Add(row); 
    }
    dgvSelectedFieldsView.DataSource = tempDt;   
}

CurrentPage *PageSize为您提供开始记录编号,CurrentPage*PageSize + PageSize为您提供最后记录编号。因此,您插入所有包含的行并绑定到数据网格。测试一下,看看它是否适合你,我远离开发机器:)