2009-10-05 46 views
0

我試圖從GridView和數據庫中刪除的行... 如果delte的LinkBut​​ton被點擊GridView中的應刪除.. 我剛開行指標如下:刪除行從選擇GridView和數據庫

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] [email protected]_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

回答

0

你不加入一個@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); 

您需要找到額外信息來滿足您的查詢,否則請更改您的查詢以刪除對它們的需求。

+0

所以我需要通過所有的值像itemname,itemdesc等..單獨?? ??我只是將行號刪除.. 有沒有更簡單的方法來做到這一點.. 謝謝 – user175084 2009-10-05 17:25:43

+0

那麼,您的刪除查詢是專門檢查這些事情。我的猜測是,如果沒有所有這些信息,行就無法被唯一標識。您必須簡化刪除查詢以僅需要該ID,否則您必須將所需的所有信息傳遞給它。 – womp 2009-10-05 18:04:40

+0

我已經簡化了上面的刪除查詢..它不會刪除..這是刪除行的唯一方法...請幫助 – user175084 2009-10-05 18:06:37

0

您在查詢中有幾個參數,即@original_MachineGroupName,但僅向您的命令對象添加一個實際參數。查詢中的每個參數都需要一個。

+0

有沒有一個簡單的方法來做到這一點...任何示例或鏈接將是偉大的.. – user175084 2009-10-05 17:46:09

0

下面的代碼會從數據庫中刪除行,如果要傳遞到方法的字符串是在表中的主鍵或唯一鍵:

string sql = "DELETE FROM [MachineGroups] WHERE [MachineGroupID] = 
        @original_MachineGroupID"; 
    SqlCommand cmd = new SqlCommand(sql, conn); 
    cmd.Parameters.AddWithValue("@original_MachineGroupID", item); 
+0

先生我試過這個命令..它仍然沒有工作.. 我知道命令是正確的...仍然可以幫助我.. 是否有一些概率與我的.aspx頁面? 我已經在上面張貼了代碼.. – user175084 2009-10-05 17:41:41

0

注意你的綁定也。如果從數據庫中刪除一行,那不會從gridview中刪除數據。您將需要重新獲取數據並重新綁定數據。

+0

先生刪除功能本身不工作..請你可以告訴我一個簡單的方法來做到這一點... 我不知道爲什麼有什麼不工作? – user175084 2009-10-05 17:56:40

+0

主要問題,我認爲它沒有得到它必須刪除的機器組ID ... insted它獲取行號..所以當我光滑刪除似乎沒有發生... – user175084 2009-10-05 17:58:50

相關問題