如何在 Windows 窗体应用程序 C# 中导航数据库

本文关键字:导航 数据库 应用程序 窗体 Windows | 更新日期: 2023-09-27 18:33:27

我有一个简单的 c# 应用程序,它显示来自访问数据库的数据

    private void DisplayRow(int rowIndex)
    {
        // Check that we can retrieve the given row
        if (myDataTable.Rows.Count == 0)
            return; // nothing to display
        if (rowIndex >= myDataTable.Rows.Count)
            return; // the index is out of range
        // If we get this far then we can retrieve the data
        try
        {
            DataRow row = myDataTable.Rows[rowIndex];
            SurnametextBox.Text = row["Surname"].ToString();
            FirstNametextBox.Text = row["Firstname"].ToString();
            PhonetextBox.Text = row["Phone"].ToString();
            ContactTypetextBox.Text = row["ContactType"].ToString();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error in DisplayRow : 'r'n" + ex.Message);
        }
    }

现在它显示了数据库中的第一条记录,就是这样,我有下一个和后退按钮来单击数据,但是需要什么代码来显示下一条记录?

如何在 Windows 窗体应用程序 C# 中导航数据库

创建一个类变量,以便您可以记住当前拥有的行索引。因此,当您单击"下一步"时,将 +1 添加到此变量中,并在按 PREVIOUS 时从中减去 (-1)。并在之后使用该变量。

class Form1
{
    int counter;
    void ButtonForth_Click()
    {
       counter++;
       YourMethod();
    }
    void ButtonBack_Click()
    {
       counter--;
       YourMethod();
    }
    void YourMethod()
    {
        DataRow row = table.Rows[counter];
        // more code...
    }
}

RhysW:感谢指出这一点。我只是简单地展示了模式代码的基础知识。当然,有很多事情要做才能使其顺利运行。

这是大约可以完成的方法:

class Form1
{
    int counter;
    DataTable table; //class variable so we can access to the reference from all over the class
    void ButtonForth_Click()
    {
       if(counter < table.Rows.Count)
          counter++;
       YourMethod();
    }
    void ButtonBack_Click()
    {
       if(counter > 0)
          counter--;
       YourMethod();
    }
    void YourMethod()
    {
        DataRow row = table.Rows[counter];
        if(row.Count > 0 )
        {
           SurnametextBox.Text = row["Surname"].ToString();
           FirstNametextBox.Text = row["Firstname"].ToString();
           PhonetextBox.Text = row["Phone"].ToString();
           ContactTypetextBox.Text = row["ContactType"].ToString();
        }
        //no need of try, catch block, is there are all the names correct (textobxes, and columns of datatable)
    }
}

确保在调用此函数之前 rowIndex 递增。否则,代码看起来不错。