【发布时间】:2016-04-05 09:18:11
【问题描述】:
在 C# 和 windows 窗体中,
我有一个这样的数据库:
这就是我使用类将其数据放入datagridview的方式:
class DBConnection
{
public static void GetList(Form2 frm2)
{
string DBPath = Application.StartupPath;
OleDbConnection Connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+DBPath+@"\DataBase\SampleFeeds.accdb");
OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary", Connection);
DataTable Dtable = new DataTable();
DataA.Fill(Dtable);
frm2.SelectedFeeddataGridView.DataSource = Dtable;
}
}
这是我的表单加载:
private void Form2_Load(object sender, EventArgs e)
{
DBConnection.GetList(this);
}
到目前为止一切正常。
现在我有一个问题:
例如我有一个列表框FeedSelectListBox,
我想当用户点击按钮GrassLegumeForagebtn 我的FeedSelectListBox 时只填写草/豆类饲料类别中的所有饲料名称。
我该怎么做?
在 Damirchi 的帮助下,我的问题解决了
//-----------------
但现在我还有一个问题: 我想当用户从列表框中选择一个提要时,将数据库中的所有数据(如名称、编号、提要类型和,,,)放入数据网格视图中。
我在SelectFeedbtn 上使用了此代码,但它不起作用:
private void SelectFeedbtn_Click(object sender, EventArgs e)
{
string StrCon = System.Configuration.ConfigurationManager.ConnectionStrings["FeedLibraryConnectionString"].ConnectionString;
OleDbConnection Connection = new OleDbConnection(StrCon);
string FeedSelectedID = FeedSelectListBox.SelectedValue.ToString();
OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary where ID = 'FeedSelectedID'" , Connection);
DataTable DTable = new DataTable();
DataA.Fill(DTable);
SelectedFeeddataGridView.DataSource = DTable;
}
而FeedSelectListBox 的ValueMember 属性是ID,但错误是:
System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常。
我什至使用了这个查询,但它仍然不起作用:
OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary where ID =" FeedSelectListBox.SelectedValue , Connection);
【问题讨论】:
-
Getlist 方法用于获取记录或表的列表,所以不要使用“frm2.SelectedFeeddataGridView.DataSource = Dtable;”在那个方法中。只需从该方法返回数据表并在 formload 方法中分配数据源。这样您也可以在 formload 事件本身中使用与 FeedSelectListBox 源相同的数据表。
-
是的,你是对的,我刚刚写了这个来测试我的连接,看看它是否正常工作,但我的问题是如何获取存在的提要的所有名称(而不是另一个字段只是名称)在一个类别中(例如草/豆类饲料类别)。