Как пролистать данные с помощью кнопок навигации?
У меня есть форма, которая загружает некоторые значения из моей базы данных SQL, и кажется, что данные загружаются правильно.
Одна вещь, которую моя форма должна позволять пользователям делать, это перемещаться вперед и назад по списку строк. Я гуглил некоторые методы для этого, но то, что я пробовал, не сработало.
Я все еще новичок в SQL и C#, поэтому я немного растерялся. Что является хорошим и элегантным способом, позволяющим моей форме циклически перемещаться по данным с помощью кнопок навигации назад и вперед?
Спасибо за прочтение.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.Sql;
namespace AccountManager
{
public partial class EditCustomer : Form
{
public EditCustomer()
{
InitializeComponent();
}
private void EditCustomer_Load(object sender, EventArgs e)
{
try
{
string conString = "Data Source=.;Initial Catalog=AccountMGR;Integrated Security=True;";
SqlConnection con = new SqlConnection(conString);
string selectSql = "Select [Id], [AccountRef] ,[BusinessName] ,[BusinessAddress1]" +
",[BusinessAddress2]" +
" ,[BusinessTown]" +
",[BusinessCounty]" +
",[BusinessPostcode]" +
",[BusinessCountry]" +
",[ContactTitle]" +
",[ContactFirstName]" +
",[ContactLastName]" +
",[ContactAddress1]" +
",[ContactAddress2]" +
",[ContactTown]" +
",[ContactCounty]" +
",[ContactPostCode]" +
",[ContactCountry]" +
",[ContactLandline]" +
",[ContactMobile]" +
",[ContactEmail] from Company";
SqlCommand cmd = new SqlCommand(selectSql, con);
try
{
con.Open();
using (SqlDataReader read = cmd.ExecuteReader())
{
while (read.Read())
{
AccountRef.Text = (read["AccountRef"].ToString());
AccountName.Text = (read["BusinessName"].ToString());
BusinessAddress1.Text = (read["BusinessAddress1"].ToString());
BusinessAddress2.Text = (read["BusinessAddress2"].ToString());
BusinessTown.Text = (read["BusinessTown"].ToString());
BusinessCounty.Text = (read["BusinessCounty"].ToString());
BusinessPostcode.Text = (read["BusinessPostcode"].ToString());
BusinessCountry.Text = (read["BusinessCountry"].ToString());
ContactTitle.Text = (read["ContactTitle"].ToString());
ContactFirstName.Text = (read["ContactFirstName"].ToString());
ContactLastName.Text = (read["ContactLastName"].ToString());
ContactAddress1.Text = (read["ContactAddress1"].ToString());
ContactAddress2.Text = (read["ContactAddress2"].ToString());
ContactTown.Text = (read["ContactTown"].ToString());
ContactCounty.Text = (read["ContactCounty"].ToString());
ContactPostcode.Text = (read["ContactPostCode"].ToString());
ContactCountry.Text = (read["ContactCountry"].ToString());
ContactLandline.Text = (read["ContactLandline"].ToString());
ContactMobile.Text = (read["ContactMobile"].ToString());
ContactEmail.Text = (read["ContactEmail"].ToString());
}
}
}
finally
{
con.Close();
}
}
finally
{
string conString = "Data Source=.;Initial Catalog=AccountMGR;Integrated Security=True;";
SqlConnection con = new SqlConnection(conString);
string selectSql = "Select Balances.id, Balances.AccountRef, Balance, PreviousBalance, LastInvoiceDate, NextInvoiceDate, InvoiceCycle from Balances inner join Company on Balances.Id = Company.Id where Company.AccountRef = @AccountRef";
SqlCommand cmd = new SqlCommand(selectSql, con);
cmd.Parameters.AddWithValue("@AccountRef", AccountRef.Text.Trim());
try
{
con.Open();
using (SqlDataReader read = cmd.ExecuteReader())
{
while (read.Read())
{
AccountRef.Text = (read["AccountRef"].ToString());
CustomerBalance.Text = (read["Balance"].ToString());
CustomerLastInvoiceDate.Text = (read["LastInvoiceDate"].ToString());
CustomerNextInvoiceDate.Text = (read["NextInvoiceDate"].ToString());
CustomerInvoiceCycle.Text = (read["InvoiceCycle"].ToString());
}
}
}
finally
{
con.Close();
}
}
}
}
}
1 ответ
Я не уверен, что полностью понимаю, но если вы установите свойство 'TabIndex' для каждого элемента управления, вы можете настроить события кнопок или клавиш для циклического перемещения по каждому элементу управления / строке.
Может выглядеть примерно так..
private void EditCustomer_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
this.ProcessTabKey(true);
}
if (e.KeyCode == Keys.Up)
{
this.ProcessTabKey(false); // False Indicates backwards
}
}