我正在使用Winforms和C#开发应用程序。我有一个类,它将获取一个表的主数据。该类中的函数执行一个存储过程,该过程返回2列数据。
我有一个表单,它有一个Listbox控件,TextBox和ComboBox。我想:
使用存储过程获取数据的代码:
public void GetDeity()
{
cmd = new SqlCommand();
cmd.Connection = conDB;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "get_DeityMaster";
cmd.ExecuteNonQuery();
return;
}
ListBox Name: lstDeityList
TextBox Name: txtDeityName
ComboBox Name: cmbDeityCategoryName
请帮助您了解如何传递数据。感谢
答案 0 :(得分:1)
你需要从你的方法返回数据,如下所示,目前你的方法什么都不返回。
您可能需要更改方法实现以返回DataTable或DataSet
public DataTable GetDeity()
{
using(SqlConnection sqlConn = new SqlConnection(conSTR))
using(SqlCommand cmd = new SqlCommand("get_DeityMaster", sqlConn))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
sqlConn.Open();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
return dt;
}
}
现在您可以使用上面返回的数据绑定Listbox
控件,当选择项更改事件时,您可以绑定其他文本框和组合框。
在您的表单中,您可以通过创建类的对象来调用类方法,如下所示
Yourclass obj = new Yourclass();
DataTable dt= obj.GetDeity();
ListBox1.DataSource = dt;
ListBox1.DisplayMember = "Column1Name";
ListBox1.ValueMember = "Column2Name";
您需要为ListBox1
添加SelectedIndexChanged
事件
private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
TextBox1.Text = ((DataRowView)ListBox1.SelectedItem).Row.ItemArray[0].ToString();
// bind the ComboBox as well
}
答案 1 :(得分:1)
将函数的返回类型从void
更改为DataTable
。使用您的命令创建SQLAdapter
并填写DataTable
。
public DataTable GetDeity()
{
DataTable mTable = new DataTable();
cmd = new SqlCommand();
cmd.Connection = conDB;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "get_DeityMaster";
SqlAapter mAdapter = new SqlAdapter(cmd);
mAdapter.Fill(mTable);
return mTable
}
答案 2 :(得分:0)
为什么不在数据表中保存获取的数据。然后将该数据表的列分配给您喜欢的不同控件。
e.g。
public void GetData()
{
DataTable odt = new DataTable();
odt = obj.GetDeity();
Combobox.DataSource = odt;
.......... set other controls also...
}
public DataTable GetDeity()
{
SqlCommand cmd = new SqlCommand("get_DeityMaster");
cmd.CommandType = CommandType.StoredProcedure;
return getdatatable(cmd); // YOUR DATA FETCHING LOGIC
}