【问题标题】:how to fill a datatable so that you can iterate through如何填充数据表以便您可以遍历
【发布时间】:2015-04-20 11:05:58
【问题描述】:

如何创建下一个和上一个按钮并循环遍历已返回到数据表的查询?

我尝试了以下方法:

protected void btnPrevious_Click(object sender, EventArgs e)
{
    DAL.CustomersDataSetTableAdapters.CustomerDetailsTableAdapter eobj = new DAL.CustomersDataSetTableAdapters.CustomerDetailsTableAdapter();
    DataTable dt = new DataTable();
}

我需要遍历表单文本框中返回的值。

【问题讨论】:

  • 请帮助我接下来需要做什么?
  • @oleksii 你关闭了我的问题,而 alt 甚至没有用!!
  • 哦,如果不是重复的,我很抱歉。不能用dt.AsEnumerable().Skip(100).Take(10)吗?
  • @PriceCheaperton 您的查询是否基于 LINQ?当您说遍历查询时,您的意思是再次运行查询,或者遍历从第一次执行查询时返回的数据表中的结果?
  • @matrixanomaly:我正在使用 tableadapter 并在我的 BLL 中返回一个数据表。我基本上想使用下一个和上一个按钮遍历记录。

标签: c# asp.net .net datatable datapager


【解决方案1】:

阅读完 cmets 后,您似乎希望有一个 Next 和 Previous 按钮来浏览数据表中的记录,该数据表已通过运行查询返回以生成数据表。

我会做的是:

  1. 创建一个单独的函数来运行查询并初始化表。

您可能不希望在用户单击上一个按钮时始终创建新的数据表并将数据绑定到它(看起来这就是您一直在尝试做的事情)

大致是这样的:

DataTable dt; //declare first so other fucntions can use this

protected void initializeDataTable()
{
    DAL.CustomersDataSetTableAdapters.CustomerDetailsTableAdapter eobj = new DAL.CustomersDataSetTableAdapters.CustomerDetailsTableAdapter();
    dt = new DataTable();
    //you might have to bind to your datasource, or 
    //run the query that generates the dataTable here.

    //after all that you might want to display the first value, index 0. 
}

我不熟悉 ASP.net DataTable 绑定,this tutorial might help。基本上你需要加载数据,我认为你可以处理这部分。

  1. 下一个和上一个按钮将增加/减少一个变量。

在类中创建一个新值i,并将其初始化为0。当用户单击下一个按钮i++,以及当用户单击上一个按钮i--时,您必须确保它不低于 0 或超过数据表的长度。

类似的东西;

protected void btnPrevious_Click(object sender, EventArgs e)
{
    if (i < totalNumberOfRecords) 
    {
        i = i + 1;
        DisplayResults(i);

        LinkButton btnPrevious = (LinkButton)Master.FindControl("ContentController").FindControl("btnPreviousRecord");        btnPrevious.Enabled = true; 
 }
}

我们设置btnPrevious.Enabled = true 或 false 是因为我们不希望用户继续点击上一个按钮,即使它已经在顶部。

您也可以添加第一个和最后一个按钮。第一次设置索引为 0,最后一次设置索引为最大行数。

DisplayResults 函数如下所示:

public void DisplayResults(int rowNumber)
{
   textBox1.Text = ds.Tables[0].Rows[i]["ID"].ToString();
   textBox2.Text = ds.Tables[0].Rows[i]["empname"].ToString();
   textBox3.Text = ds.Tables[0].Rows[i]["salary"].ToString();
   //and so on so forth.
}

这个例子改编自this C# tutorial,也许对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-21
    • 2019-06-06
    • 1970-01-01
    • 2023-04-04
    • 2021-02-21
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多