在这方面有很多麻烦。我正在做一个大型项目,所以我感兴趣并正在研究的课程很少。基本上,这些是表单——一个是主编辑器,用户在其中编辑详细信息,另一个用于分配密码。在主编辑器表单中,如果用户有一个 pin,他们可以选择编辑这个 pin。这就是我的问题所在 - 如果我编辑 pin,我在代码中所做的是删除旧 pin 并添加新 pin。但是,数据库在编辑器表单关闭后才会更新。因此,如果可以的话,我想调用在 OKButton 单击时更改数据库的方法。我面临的问题是我不知道如何。
这是 DB 代码,我们会说该类称为 DetailsConn:
public string editPin(int driverID)
{
if (SchemaChecker.PINAvailable())
{
string sql = "EditPIN";
using (SqlCommand cmd = new SqlCommand(sql, base.connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Remove("@nDriverID");
cmd.Parameters.AddWithValue("@nDriverID", driverID);
cmd.Parameters.Remove("@nPIN");
SqlParameter pinParameter = cmd.Parameters.Add("@nPIN", SqlDbType.Char);
pinParameter.Direction = ParameterDirection.Output;
pinParameter.Size = 32;
cmd.ExecuteNonQuery();
return pinParameter.Value.ToString();
}
}
return "";
}
这是我的编辑代码:
private void editToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.listViewDriverTags.SelectedItems.Count > 0)
{
ListViewItem lvi = this.listViewDriverTags.SelectedItems[0];
DriverTag driverTag = lvi.Tag as DriverTag;
else if (blahTag.blahType == 2)
{
buttonAssignPIN_Click(sender, e);
}
//message stuff and dialog boxes with localization info
if (dr == DialogResult.Yes)
{
this.listViewDriverTags.Items.Remove(lvi);
if (Tag.id != -1)
{
TagsToBeDeleted.Add(driverTag);
}
}
if (dr == DialogResult.No)
{
this.listViewTags.Items.Clear();
this.listViewTags.Items.Add(lvi);
}
}
}
这是我的 buttonAssignPIN 内容:
private void buttonAssignPIN_Click(object sender, EventArgs e)
{
using (AssignPINForm form = new AssignPINForm())
{
if (form.ShowDialog(this) == DialogResult.OK)
{
DriverTag PIN = DriverTag.GetNewPIN(form.DriverTag);
ListViewItem lvi = this.listViewTags.Items.Add(PIN.driverTag);
lvi.SubItems.Add(this.TagTypes[PIN.TagType]);
lvi.Tag = PIN;
}
}
}
最后,这是我的 AssignPINForm 代码:
public partial class AssignPINForm : Form
{
public AssignPINForm()
{
InitializeComponent();
this.buttonOK.Click += new EventHandler(buttonOK_Click);
this.buttonCancel.Click += new EventHandler(buttonCancel_Click);
this.buttonOK.Enabled = false;
this.textBoxPin.TextChanged += delegate(object sender, EventArgs e)
{
String pattern = @"^[0-9]{4,20}$";
Regex regex = new Regex(pattern);
buttonOK.Enabled = regex.IsMatch(textBoxPin.Text);
};
LoadStrings();
}
public void LoadStrings()
{
//stome stuff
}
public string DriverTag
{
get { return this.textBoxPin.Text; }
set { this.textBoxPin.Text = value; }
}
private void buttonOK_Click(object sender, EventArgs e)
{
}
private void buttonCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void AssignPINForm_Load(object sender, EventArgs e)
{
}
}
我知道它到处都是,但我已经提供了我认为相关的一切。中间的两个片段也在同一个类中,数据库的东西是相同的解决方案,但不同的项目。如果有人能破译我所追求的并帮助我,我将不胜感激,这是我在这个特定位上唯一要做的事情!
谢谢!