【发布时间】:2014-09-09 22:07:27
【问题描述】:
我需要一些帮助来将表格中的数据显示到 winform 上。通常这可以使用 datagridview 来完成,但据我了解,datagridvide 要么显示表的全部内容,要么我可以使用过滤器函数来显示与过滤器匹配的数据。
我目前面临的问题是,我有一个名为 book_issued 的表,其中包含所有发给学生的书籍的详细信息,每个学生都有一个唯一的 regid。
我有一个登录表单,它在学生登录时获取他的 regid 值,然后将他们引导到另一个表单,该表单应该显示学生已发行的所有书籍的列表。
为了实现这一点,我正在运行 sql 查询
"SELECT * FROM book_issued WHERE regid = @regid"
我正在跳过传递参数化值并从数据读取器读取数据的过程。
我的问题是在表单上显示这些数据,非常感谢一些帮助
与问题无关的愚蠢代码,但如果没有它,人们会否决问题
private void student_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'libDataSet8.issue' table. You can move, or remove it, as needed.
this.issueTableAdapter1.Fill(this.libDataSet8.issue);
// TODO: This line of code loads data into the 'libDataSet7.issue' table. You can move, or remove it, as needed.
//this.issueTableAdapter.Fill(this.libDataSet7.issue);
//// TODO: This line of code loads data into the 'libDataSet6.books' table. You can move, or remove it, as needed.
//this.booksTableAdapter.Fill(this.libDataSet6.books);
}
private void nameToolStripButton_Click(object sender, EventArgs e)
{
try
{
this.booksTableAdapter.name(this.libDataSet6.books, nameToolStripTextBox.Text);
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
//Get Student Details
private void student_details(string input)
{
query = "SELECT * FROM student WHERE regid = @regid";
string conString = Properties.Settings.Default.libConnectionString;
using (SqlCeConnection conn = new SqlCeConnection(conString))
{
conn.Open();
using (SqlCeCommand cmd = new SqlCeCommand(query, conn))
{
cmd.Parameters.AddWithValue("@regid", input);
cmd.ExecuteNonQuery();
SqlCeDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
dob = reader["dob"].ToString();
sbook = Convert.ToInt32(reader["book"].ToString());
fine = Convert.ToDouble(reader["fine"].ToString());
}
string temp = dob.Substring(5, 4);
int years = DateTime.Now.Year - Convert.ToInt32(temp);
sage = years;
}
}
}
//Method to validate user inputs
private bool ValidateISBNi()
{
bool bStatus = true;
if (isbni.Text == string.Empty)
{
errorProvider2.SetError(isbni, "");
errorProvider1.SetError(isbni, "Please Enter ISBN code");
bStatus = false;
}
else
{
query = "SELECT * FROM books WHERE isbn = @isbn";
string conString = Properties.Settings.Default.libConnectionString;
using (SqlCeConnection conn = new SqlCeConnection(conString))
{
conn.Open();
using (SqlCeCommand cmd = new SqlCeCommand(query, conn))
{
cmd.Parameters.AddWithValue("@isbn", isbni.Text);
cmd.ExecuteNonQuery();
SqlCeDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
counter = 1;
}
}
}
if (counter == 1)
{
errorProvider1.SetError(isbni, "");
errorProvider2.SetError(isbni, "Good");
counter = 0;
}
else
{
errorProvider2.SetError(isbni, "");
errorProvider1.SetError(isbni, "Invalid ISBN code");
bStatus = false;
}
}
return bStatus;
}
private bool ValidateISBNr()
{
bool bStatus = true;
if (isbni.Text == string.Empty)
{
errorProvider2.SetError(isbnr, "");
errorProvider1.SetError(isbnr, "Please Enter ISBN code");
bStatus = false;
}
else
{
query = "SELECT * FROM issue WHERE isbn = @isbn AND rgid = @rgid";
string conString = Properties.Settings.Default.libConnectionString;
using (SqlCeConnection conn = new SqlCeConnection(conString))
{
conn.Open();
using (SqlCeCommand cmd = new SqlCeCommand(query, conn))
{
cmd.Parameters.AddWithValue("@isbn", isbnr.Text);
cmd.Parameters.AddWithValue("@rgid", Variables.regid);
cmd.ExecuteNonQuery();
SqlCeDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
counter = 1;
}
}
}
if (counter == 1)
{
errorProvider1.SetError(isbnr, "");
errorProvider2.SetError(isbnr, "Good");
counter = 0;
}
else
{
errorProvider2.SetError(isbni, "");
errorProvider1.SetError(isbni, "Invalid ISBN code");
bStatus = false;
}
}
return bStatus;
}
private void isbni_Validating(object sender, CancelEventArgs e)
{
ValidateISBNi();
}
private void isbnr_Validating(object sender, CancelEventArgs e)
{
ValidateISBNr();
}
private void button1_Click(object sender, EventArgs e)
{
bool vissue;
vissue = ValidateISBNi();
if (vissue)
{
}
}
private void button3_Click(object sender, EventArgs e)
{
this.Close();
}
private void groupBox3_Enter(object sender, EventArgs e)
{
}
}
}
添加了一堆随机代码对 ne1 有帮助吗?我没想到这就是为什么我没有首先发布它
【问题讨论】:
-
如果您使用数据绑定 DGV,则由您选择 a) 决定将多少行传输到数据集中,以及 b) 在 DGV 中发送和创建哪些列。但您也可以创建导航控件并将一些绑定数据复制到各种控件,如标签、复选框文本框等。
-
有时会发生这种情况。这通常意味着他们认为这个问题在未来对其他人没有多大用处。什么都别想——或者别想太多!
标签: c# sql winforms datagridview