比如说我里面有三行数据我添加商品如图
添加成功之后
到VS调试。。如图点击右键添加商品菜单之后
调试第一次添加成功(添加了几项)
但是问题来了随后删除不了添加的商品找不到tag属性保存的Id。如图
我试着再次调试发现可以删除了(删除完)。
让后我用f5调试发现其实在添加ID是保存了的。
最大问题来了。在进行之前的操作之后。再次调试添加就会发生我最为疑惑事。
通过select CAST(SCOPE_IDENTITY() AS INT)返回值
tag的值无论进行多少次添加都是数字1。不知道为什么。各位前辈求解??拜谢
VS代码如下:
private void Form2_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt = DBHelper.query("select CardsId,CardsName from Cards");
for (int i = 0; i < dt.Rows.Count; i++)
{
treeView1.Nodes[0].Nodes.Add(dt.Rows[i]["CardsName"].ToString());var node = treeView1.Nodes[0].Nodes[treeView1.Nodes[0].Nodes.Count - 1];
node.ImageIndex = 1;
node.SelectedImageIndex = 0;
node.ContextMenuStrip = contextMenuStrip1;
node.Tag = dt.Rows[i]["CardsId"];
}
}
private void 添加商品ToolStripMenuItem_Click(object sender, EventArgs e)
{
int id = DBHelper.cute("INSERT INTO Cards VALUES ('新商品')SELECT @@IDENTITY AS 'Identity'");
if(id <= 0)
{
MessageBox.Show("添加失败。");
return;
}
//添加商品
var node = treeView1.Nodes[0].Nodes.Add("新品牌");
node.ImageIndex = 1;
node.SelectedImageIndex = 0;
//绑定菜单
node.ContextMenuStrip = contextMenuStrip1;
//保存节点
node.Tag = id;
//找到选择项
treeView1.SelectedNode = node;
//开始编辑
node.BeginEdit();
}
private void 删除商品ToolStripMenuItem_Click(object sender, EventArgs e)
{
string id = treeView1.SelectedNode.Tag.ToString();
int num = DBHelper.execute(string.Format("DELETE FROM Cards WHERE CardsId = ") + id);
if (num > 0)
{
treeView1.Nodes[0].Nodes.Remove(treeView1.SelectedNode);
}
else {
MessageBox.Show("删除失败");
}
}
private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
{
treeView1.SelectedNode.BeginEdit();
}
private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
if(e.Label == null)
{
e.CancelEdit = true;
return;
}
DialogResult dr = MessageBox.Show("是否修改商品信息", "修改", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (DialogResult.No == dr)
{
e.CancelEdit = true;
return;
}
string id = treeView1.SelectedNode.Tag.ToString();
string sql = string.Format("update Cards set CardsName = '{0} ' where CardsId = {1}", e.Label, id);
int num = DBHelper.execute(sql);
if (num <= 0)
{
e.CancelEdit = true;
MessageBox.Show("保存失败");
}
else {
}
}