簡體   English   中英

從選定的GridView和數據庫中刪除行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM