比如說我裡面有三行數據我添加商品如圖
添加成功之後
到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 {
}
}
你的DBHelper.execute返回的是影響的行數,不是select的結果吧