我正在开展一个学校开发项目,我对开发很陌生。我一直在网上阅读,但找不到我正在寻找的答案。
到目前为止,我已经在我的Windows窗体应用程序中创建了一个列表框,我希望从我的一个列中选择所有值,这些值应该作为参数在我的dataGridView中根据参数显示数据。
我创建了70%的项目,剩下的就是这个功能。我的数据库在Azure中,我可以写入它并添加新行,但是当我运行它时,我无法读取任何内容。
到目前为止,这是我的gridview的代码,我只想显示其中的所有数据,但它没有显示任何内容。
namespace MyNamespace
{
public partial class CompanyForm : Form
{
public CompanyForm()
{
InitializeComponent();
}
//Connection String
string cs = ConfigurationManager.ConnectionStrings["ConnectionString"].
ConnectionString;
private void createCompany_Click_1(object sender, EventArgs e)
{
if (textBoxCompanyName.Text == "")
{
MessageBox.Show("Fill information");
return;
}
using (SqlConnection con = new SqlConnection(cs))
{
//Create SqlConnection
con.Open();
SqlCommand cmd = new SqlCommand
(
"insert into dbo.Company (companyName)
values(@companyName)", con);
cmd.Parameters.AddWithValue
(
"@companyName",
textBoxCompanyName.Text);
SqlDataAdapter adapt = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapt.Fill(ds);
MessageBox.Show("GJ");
}
}
// The code that is not filling my datagrid
private void dataEmployees_Load()
{
using (SqlConnection con = new SqlConnection(cs))
{
con.Open();
SqlCommand cmd = new SqlCommand
(
"Select fname,ename FROM dbo.Users", con
);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
dataEmployees.DataSource = dt;
}
}
}
}
我的连接字符串正在运行,它已经能够将数据插入到我拥有的表中。
答案 0 :(得分:0)
为什么Grid没有显示任何数据的问题是您尝试将SqlDataReader绑定到它。这不起作用,因为Grid不支持DataSource。
您需要的是DataSource DataTable, IList<T>, IBindingList<T>
。在您的情况下,DataTable将是最简单的解决方案。试试这个:
protected void DataEmployees()
{
using (SqlConnection con = new SqlConnection(cs))
{
con.Open();
SqlCommand cmd = new SqlCommand
(
"Select firstname,lastname FROM employees",con
);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
dataEmployees.DataSource = dt;
}
}
请注意,方法在C#中写成大写。进一步注意,如果使用using-block,则不需要手动关闭连接。在使用块结束时,它会自动关闭/处理。