帮助我如何从数据库中获取数据并显示到另一个表单? 这张照片是系统的流程。
流量 我会选择一行 2.出现另一个表单,显示我选择的特定行的StartDate和EndDate。
这些是剩下的错误。
答案 0 :(得分:0)
在表单之间传递数据:
Form1
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string nTitle = textBox1.Text;
string nText = textBox2.Text ;
Form2 frm = new Form2(nTitle, nText);
frm.Show();
}
}
}
Form2
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
}
public Form2(string title,string txt)
{
InitializeComponent();
this.Text = title;
label1.Text = txt;
}
}
}
答案 1 :(得分:0)
以下是您可以选择的选项。
在Form2
:
创建label
或textbox
,然后为其命名为idtextbox.text
(或任何您想要的)或label
至idlabel
然后设置从private
到public
的修饰符属性。
然后创建一个从ID基于数据库加载数据的方法,如下所示:
public void yourMethodName()
{
string connection = @"datasource = localhost; database=sub; Uid=root; Password=steph";
MySqlConnection connect = new MySqlConnection(connection);
string yourQuery = null;
yourQuery = "SELECT top 1 * from sub.transmittal_transaction WHERE id=@id";
MySqlCommand executeQuery = new MysqlCommand(yourQuery, connect);
executeQuery.Parameters.Add("@id", SqlDbType.Int);
executeQuery.Parameters["@id"].Value = yourtextboxnamehere.Text; // or = your labelname.text
connect.Open();
MySqlDataReader datareader = executeQuery.ExecuteReader();
try
{
if (datareader.HasRows)
{
datareader.Read();
yourtextboxnamehere.Text = datareader["id"].ToString();
startDate.text = datareader["yourStartDateColumnNameHere"].ToString(); // if your using a label it still ends in .text same goes with using textbox to display it on the form.
endDate.text = datareader["yourEndDateColumnNameHere"].ToString(); // if your using a label it still ends in .text same goes with using textbox to display it on the form.
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
然后在Form1
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
Form2 frm = new Form2();
frm.yourtextboxnamehere.Text = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
frm.ShowDialog();
}
}
以上代码的作用是Form1
cellcontextclick
事件将打开Form2
然后将datagridview上当前行id
的值传递给Form2
label
或textbox
然后从那里根据数据库中的startdate
读取并显示enddate
和id
。但是,如果你想要在图片上注意到每个页码1 id
,那么你需要的不仅仅是这段代码。
这也是一个选择:
executeQuery.Parameters.AddWithValue("@id", yourtextboxnamehere.Text);
而不是:
executeQuery.Parameters.Add("@id", SqlDbType.Int);
executeQuery.Parameters["@id"].Value = yourtextboxnamehere.Text;
但是这个选项被认为是不好的。请阅读此Why we need to stop with AddWithValue。