【解決方法】最初の次の最後の前のボタンのコードと、ページ ウィンドウの C# アプリケーションでのデータの表示

プログラミングQA


やあ、
Windows C# アプリケーションを作成します。 最初、次、最後、前のようなボタンを配置しました。
今、データベースからのレコードのフェッチを表示し、ページに表示したいと考えています。
最初のボタンをクリックすると、ロード時のデータが最初に表示されます。 最後にクリックすると最後のレコードが表示され、前をクリックすると前のデータが表示され、次をクリックするとC#Windowsアプリケーションで次のデータが表示されます。
助けてください…

私が試したこと:

コードを作成しようとしましたが、成功しませんでした。 for ループを使用してそれを使用し、ページの読み込み時にデータを表示するにはどうすればよいですか。

解決策 1

ループは使用しません。
これを行う正確な方法は、データをフェッチする方法、関係するデータの量、DB に正確に何が含まれているかなど、さまざまな要因によって異なります。
しかし、1つの方法は次のとおりです。
DB に IDENTITY の Id 列が含まれていることを確認してください。
と呼ばれるDBにクラスレベルのintを設定します lastRow -1 に設定します。
DB から単一の行を取得して表示する場合は、次のようなものを使用します。

SQL
SELECT TOP 1 * FROM MyTable WHERE Id > lastRow ORDER BY ID ASC

行を取得した場合は、lastRow に ID 値をロードします。
「次へ」については、同じクエリです。
以前の場合:

SQL
SELECT TOP 1 * FROM MyTable WHERE Id < lastRow ORDER BY ID DESC

初め:

SQL
SELECT TOP 1 * FROM MyTable ORDER BY ID ASC

最終:

SQL
SELECT TOP 1 * FROM MyTable ORDER BY ID DESC

解決策 2

この例を使用してフォームを作成します

C#
public partial class Form1 : Form
   {

       public Form1()
       {
           InitializeComponent();
       }

       DataTable dt = new DataTable();
       int index = 0;
       int last = 0;

       private void Form1_Load(object sender, EventArgs e)
       {
           dt.Columns.Add("FirstName");
           dt.Columns.Add("LastName");

           dt.Rows.Add("Moto", "Nexus");
           dt.Rows.Add("Apple", "Iphone");
           dt.Rows.Add("Sony", "Vaio");
           dt.Rows.Add("Samsung", "Edge");

           index = 0;
           last = dt.Rows.Count -1;
           PopulateData();
       }

       private void btnFirst_Click(object sender, EventArgs e)
       {
           index = 0;
           PopulateData();
       }
       private void btnLast_Click(object sender, EventArgs e)
       {
           index = last - 1;
           PopulateData();
       }
       private void btnPrev_Click(object sender, EventArgs e)
       {
           index--;
           index = index <0? 0:index;
           PopulateData();
       }
       private void btnNext_Click(object sender, EventArgs e)
       {
           index++;
           index = index > last? last : index;
           PopulateData();
       }

       private void PopulateData()
       {
           DataRow row = dt.Rows[index];
           string firstName = row["FirstName"].ToString();
           string lastName = row["LastName"].ToString();
           txtFirstName.Text = firstName;
           txtLastName.Text = lastName;

       }
   }

解決策 7

引用:

Windows フォームでの BindingNavigator コントロールの出現により、開発者は、エンド ユーザーが作成するフォーム上で、単純なデータ ナビゲーションと操作のユーザー インターフェイスを提供できるようになります。

BindingNavigator コントロールを使用してデータをナビゲートする – Windows フォーム .NET Framework | Microsoft Docs[^]

コメント

タイトルとURLをコピーしました