2009-10-05 5 views
0

gridview 및 데이터베이스에서 행을 삭제하려고합니다 ... delte linkbutton을 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_MachineGroupName 매개 변수를 추가하지 않는 "@original_MachineGroupID"

답변

0

를 선언해야합니다. 검색어가 여러 변수를 참조하고 그 중 하나만 추가했습니다.

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

+0

글쎄, 삭제 쿼리는 이러한 것들을 특별히 검사하고 있습니다. 내 추측으로는 행이이 모든 정보 없이는 고유하게 식별 될 수 없다는 것입니다. ID 만 필요하면 삭제 쿼리를 단순화해야하며, 그렇지 않으면 필요한 모든 정보를 전달해야합니다. – womp

+0

나는 위와 같이 삭제 쿼리를 단순화했다. stll이 삭제되지 않는다. 행을 삭제하는 유일한 방법이다 ... – user175084

0

검색어에 여러 매개 변수 즉, @original_MachineGroupName이 있지만 명령 개체에 하나의 실제 매개 변수 만 추가하고 있습니다. 쿼리의 각 매개 변수에 대해 하나씩 필요합니다.

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

이 작업을 수행하는 간단한 방법이 있습니다 ... 모든 예제 또는 링크가 좋을 것입니다 .. – user175084

0

다음 코드는 데이터베이스에서 행을 삭제합니다. 데이터베이스에서 행을 삭제하면 그리드 뷰에서 데이터가 삭제되지 않습니다. 데이터를 다시 가져 와서 다시 바인딩해야합니다.

+0

선생님이 명령을 시도 .. 아직도 작동하지 않습니다 .. 나는 명령이 맞다는 것을 알고 있습니다. 여전히 도움을 줄 수 있습니다. 저 .. 내 .aspx 페이지와 함께 몇 가지 prob 무엇입니까 ?? 위에 코드를 게시했습니다 .. – user175084

0

것은 또한 데이터 바인딩보기 : 당신이 메서드에 전달하는 문자열이 테이블의 기본 또는 고유 키는 경우

+0

삭제 기능 자체가 작동하지 않습니다 .. 제발이 간단한 방법을 말해 줄 수 있습니다 ... 왜 아무 것도 작동하지 않는 이유는 무엇입니까 ?? – user175084

+0

주요한 문제는 그것이 삭제해야하는 machinegroup id를 얻지 못한다고 생각합니다. 행 번호를 얻고 있습니다.그래서 내가 삭제에 매끄러운 아무것도 일어나지 않을 것 같다 ... – user175084

관련 문제