我有两种形式,主要形式显示网格控件和网格控件顶部的更新按钮,另一种形式是可以输入文本的更新形式。我正在使用 SQL Server 和我的代码顶部,这是主要形式的代码。
public partial class SqlForm : Form
{
DataTable dataTable = new DataTable();
private const string mssql = @"(my mssql server)";
}
public SqlForm()
{
InitializeComponent();
this.Load += SqlForm_Load;
gridView1.OptionsBehavior.Editable = false;
dataTable.Columns.Add("DptID", typeof(int));
DataColumn departmentCodeColumn = dataTable.Columns.Add("DptCode", typeof(int));
dataTable.Columns.Add("DptName", typeof(string));
this.gridControl1.DataSource = dataTable;
}
我使用数据表作为数据源,这是我的更新按钮点击事件。
private void UpdateClick_Click(object sender, EventArgs e)
{
if (gridView1.GetFocusedDataRow() is DataRow dr)
{
using (UpdateDpt update = new UpdateDpt())
{
update.ShowDialog();
dr = update.DataRow;
if (update.IsUpdated)
{
}
}
}
}
这是我更新表单的代码。
public bool IsUpdated { get; private set; }
public DataRow DataRow { get; private set; }
public UpdateDpt()
{
InitializeComponent();
okClick.Click += OkClick_Click;
cancelClick.Click += CancelClick_Click;
this.Load += UpdateDpt_Load;
}
private void UpdateDpt_Load(object sender, EventArgs e)
{
}
private void CancelClick_Click(object sender, EventArgs e)
{
this.Close();
}
private void OkClick_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(mssql))
{
conn.Open();
try
{
int DptCode = Convert.ToInt32(txtDptCode.Text);
string DptName = txtDptName.Text;
int DptID = DataRow.Field<int>("DptID");
SqlCommand cmd = new SqlCommand("Update [Department] Set DptName= @DptName,DptCode = @DptCode Where DptID = @DptID", conn);
SqlParameter param = new SqlParameter("@DptCode", SqlDbType.Int);
param.Value = DptCode;
SqlParameter param1 = new SqlParameter("@DptName", SqlDbType.NVarChar);
param1.Value = DptName;
SqlParameter param2 = new SqlParameter("@DptID", SqlDbType.Int);
param2.Value = DptID;
cmd.Parameters.Add(param);
cmd.Parameters.Add(param1);
cmd.Parameters.Add(param2);
cmd.ExecuteNonQuery();
IsUpdated = true;
conn.Close();
this.Close();
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
}
但是有一个错误说:
"int DptID = DataRow.Field("DptID");"在数据行中为空。
我想连接主窗体的 gridview 的数据行字段并更新窗体的数据行字段。我想我必须使用数据行的 getter setter 但我不知道该怎么做。有人可以帮我吗?