[英]delete row from selected gridview and database
我正在嘗試從gridview和數據庫中刪除一行...如果在gridview中單擊一個delte linkbutton,則應將其刪除。.我正在獲取行索引,如下所示:
protected void LinkButton1_Click(object sender, EventArgs e)
{
LinkButton btn = (LinkButton)sender;
GridViewRow row = (GridViewRow)btn.NamingContainer;
if (row != null)
{
LinkButton LinkButton1 = (LinkButton)sender;
// Get reference to the row that hold the button
GridViewRow gvr = (GridViewRow)LinkButton1.NamingContainer;
// Get row index from the row
int rowIndex = gvr.RowIndex;
string str = rowIndex.ToString();
//string str = GridView1.DataKeys[row.RowIndex].Value.ToString();
RemoveData(str); //call the delete method
}
}
現在我想刪除它...所以我在這段代碼上有問題..我收到一個錯誤
必須聲明標量變量“ @original_MachineGroupName” ...任何建議
private void RemoveData(string item)
{
SqlConnection conn = new SqlConnection(@"Data Source=JAGMIT-PC\SQLEXPRESS;
Initial Catalog=SumooHAgentDB;Integrated Security=True");
string sql = "DELETE FROM [MachineGroups] WHERE [MachineGroupID] =
@original_MachineGroupID;
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@original_MachineGroupID", item);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
塊引用
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:SumooHAgentDBConnectionString %>"
SelectCommand="SELECT MachineGroups.MachineGroupID, MachineGroups.MachineGroupName,
MachineGroups.MachineGroupDesc, MachineGroups.TimeAdded,
MachineGroups.CanBeDeleted, COUNT(Machines.MachineName) AS Expr1,
DATENAME(month, (MachineGroups.TimeAdded - 599266080000000000) / 864000000000) +
SPACE(1) + DATENAME(d, (MachineGroups.TimeAdded - 599266080000000000) /
864000000000) +
', ' + DATENAME(year, (MachineGroups.TimeAdded - 599266080000000000) /
864000000000) AS Expr2 FROM MachineGroups FULL OUTER JOIN Machines ON
Machines.MachineGroupID = MachineGroups.MachineGroupID GROUP BY
MachineGroups.MachineGroupID, MachineGroups.MachineGroupName,
MachineGroups.MachineGroupDesc, MachineGroups.TimeAdded,
MachineGroups.CanBeDeleted"
DeleteCommand="DELETE FROM [MachineGroups] WHERE
[MachineGroupID] =@original_MachineGroupID" >
<DeleteParameters>
<asp:Parameter Name="@original_MachineGroupID" Type="Int16" />
<asp:Parameter Name="@original_MachineGroupName" Type="String" />
<asp:Parameter Name="@original_MachineGroupDesc" Type="String" />
<asp:Parameter Name="@original_CanBeDeleted" Type="Boolean" />
<asp:Parameter Name="@original_TimeAdded" Type="Int64" />
</DeleteParameters>
</asp:SqlDataSource>
我仍然收到一個錯誤:必須聲明標量變量“ @original_MachineGroupID
”
您沒有在查詢中添加@original_MachineGroupName參數。 您的查詢引用了多個變量,而您僅添加了其中一個。
cmd.Parameters.AddWithValue("@original_MachineGroupID", item);
cmd.Parameters.AddWithValue("@original_MachineGroupName", itemName);
cmd.Parameters.AddWithValue("@original_MachineGroupDesc", itemDesc);
cmd.Parameters.AddWithValue("@original_CanBeDeleted", true);
cmd.Parameters.AddWithValue("@original_TimeAdded", time);
您將需要找到額外的信息來滿足您的查詢,或者更改查詢以消除對它們的需求。
您在查詢中有幾個參數,即@original_MachineGroupName,但僅向您的命令對象添加一個實際參數。 查詢中的每個參數都需要一個。
如果傳遞給方法的字符串是表中的主鍵或唯一鍵,則以下代碼將從數據庫中刪除該行:
string sql = "DELETE FROM [MachineGroups] WHERE [MachineGroupID] =
@original_MachineGroupID";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@original_MachineGroupID", item);
還要注意您的數據綁定。 如果從數據庫中刪除行,則不會從gridview中刪除數據。 您將需要重新獲取數據並再次對其進行數據綁定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.