0

我有一个简单的 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);
        }

    }

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

4

3 回答 3

1

创建一个类变量,这样您就可以记住您当前拥有的行索引。因此,当您单击 NEXT 时,将 +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...
    }
}
于 2012-05-08T14:43:33.570 回答
1

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)
    }
}
于 2012-05-08T16:47:19.830 回答
0

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

于 2012-05-08T14:41:46.303 回答