【发布时间】:2017-03-13 13:57:03
【问题描述】:
我正在使用 C# 解决方案,我有这个表单,我正在填充我的 txtboxes,使用 DataTable 对象,然后通过行号检索信息,问题是,我有导航按钮,下一个和上一个,我只是注意到当我将我的函数调用到 PopulateView();按下此按钮后,我重做 DB 连接、SQLite 查询和数据表填充。
我感到很惭愧,但我真的不知道在哪里放置这个函数以便我的其他函数以这种形式接收这些对象。
我的代码:
namespace X_Project{
public partial class Cad_Prod : Form
{
System.Data.SQLite.SQLiteConnection conn1 = new System.Data.SQLite.SQLiteConnection("data source=X.s3db");
int prodstart = 0;
public Cad_Prod()
{
InitializeComponent();
}
public void Cad_Prod_Load(object sender, EventArgs e)
{
}
private void PopulateView()
{
string query = "SELECT * FROM Cad_Prod";
string query2 = "SELECT * FROM Cat";
try
{
using (SQLiteCommand comm = new SQLiteCommand(query, conn1))
using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(comm))
using (SQLiteCommand comm2 = new SQLiteCommand(query2, conn1))
using (SQLiteDataAdapter adapter2 = new SQLiteDataAdapter(comm2))
{
conn1.Open();
DataTable produtos = new DataTable();
adapter.Fill(produtos);
DataTable categoria = new DataTable();
adapter2.Fill(categoria);
int auxCat = int.Parse(produtos.Rows[prodstart].ItemArray[4].ToString()) - 1;
txtProdutoNome.Text = produtos.Rows[prodstart].ItemArray[1].ToString();
txtProdutoPreco.Text = produtos.Rows[prodstart].ItemArray[2].ToString();
txtProdutoQtd.Text = produtos.Rows[prodstart].ItemArray[3].ToString();
cbbCategoria.Text = categoria.Rows[auxCat].ItemArray[1].ToString();
}
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnAvancar_Click(object sender, EventArgs e)
{
prodstart = prodstart + 1;
PopulateView();
}
private void btnVoltar_Click(object sender, EventArgs e)
{
prodstart = prodstart - 1;
PopulateView();
}
}
上面的代码有效,但不是我想要的,我真正想做的是:
namespace X_Project\
{
public partial class Cad_Prod : Form
{
System.Data.SQLite.SQLiteConnection conn1 = new System.Data.SQLite.SQLiteConnection("data source=X.s3db");
int prodstart = 0;
public Cad_Prod()
{
InitializeComponent();
}
public void Cad_Prod_Load(object sender, EventArgs e)
{
string query = "SELECT * FROM Cad_Prod";
string query2 = "SELECT * FROM Cat";
try
{
using (SQLiteCommand comm = new SQLiteCommand(query, conn1))
using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(comm))
using (SQLiteCommand comm2 = new SQLiteCommand(query2, conn1))
using (SQLiteDataAdapter adapter2 = new SQLiteDataAdapter(comm2))
{
conn1.Open();
DataTable produtos = new DataTable();
adapter.Fill(produtos); // I would like this to be inherited
DataTable categoria = new DataTable();
adapter2.Fill(categoria); // I would like this to be inherited
}
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private void PopulateView()
{
int auxCat = int.Parse(produtos.Rows[prodstart].ItemArray[4].ToString()) - 1;
txtProdutoNome.Text = produtos.Rows[prodstart].ItemArray[1].ToString();
txtProdutoPreco.Text = produtos.Rows[prodstart].ItemArray[2].ToString();
txtProdutoQtd.Text = produtos.Rows[prodstart].ItemArray[3].ToString();
cbbCategoria.Text = categoria.Rows[auxCat].ItemArray[1].ToString();
}
private void btnAvancar_Click(object sender, EventArgs e)
{
prodstart = prodstart + 1;
PopulateView();
}
private void btnVoltar_Click(object sender, EventArgs e)
{
prodstart = prodstart - 1;
PopulateView();
}
}
【问题讨论】:
标签: c# class object inheritance