C# 分页-在c中列出datatable中以前的一组值# 我保存一个名为TEMPTATE的临时数据表,它保存了大约22行,它已经在DATAGRID中显示在每个页面中的5个记录中,考虑到我在第三页,在那里,B将只记录2个记录,如果我点击上一个按钮,我需要显示前一组(15-20)5个值,并且如果我点击之前它应该显示(10—15)。5.价值观等等
我已经把代码贴在这里了。。这里的问题是,我只能检索前5个值,我的意思是15-20。。我需要使它通用,但无法从中获得灵感C# 分页-在c中列出datatable中以前的一组值# 我保存一个名为TEMPTATE的临时数据表,它保存了大约22行,它已经在DATAGRID中显示在每个页面中的5个记录中,考虑到我在第三页,在那里,B将只记录2个记录,如果我点击上一个按钮,我需要显示前一组(15-20)5个值,并且如果我点击之前它应该显示(10—15)。5.价值观等等,c#,datagridview,datatable,paging,C#,Datagridview,Datatable,Paging,我已经把代码贴在这里了。。这里的问题是,我只能检索前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 ' an
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;
}
有人能帮我吗
谢谢虽然您可以使用DATAPHER,但是如果您手动实现它,则需要考虑很少的事情。
- 页面大小
- 当前页
- 总页数
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();
}
在页面的页面加载事件中调用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()
publilc void BindGrid()
{
tempDt.Clear();
对于(int i=(currentPage*pageSize);i什么是d
什么是g
,什么是acc
?您介意为我们(和您)使用更有意义的变量名吗?@Mainsh-Mishra:非常感谢您的回复..上面的逻辑对我来说非常有效..再次感谢..@Mainsh-Mishra:一个小的澄清,上面的逻辑适用于5页,一组25行。我的意思是每页5行假设如果我需要使pagesize通用,我的意思是应该能够添加n行,但表应该是ld只显示5行以供使用..这正是我需要做的..请帮助我更改'pageSize'变量值;它完全是generic@Mainsh米斯特拉:如果我试着改变页面大小,比如说,对于例如10,它会倾向于每页显示10行。但是我需要在一个有n页的表格中显示5条记录,有可能吗..页面大小意味着,数字在网格的一页中显示记录的数量。因此,它可以正常工作。如果您只想显示5条记录,请将pageSize设置为5,您还需要什么?“n个页面”表示“?”您是指页面按钮还是总页面??
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;
}