使用自动增量ID与ASP.NET复选框列表

时间:2013-04-30 20:05:44

标签: asp.net sql auto-increment checkboxlist

首先,我对编程很陌生,所以对细节的关注是值得赞赏的。

我目前有一个asp复选框列表,它从SQL表中接收数据。我遇到了一个问题,如果有2个项目完全相同,我的删除功能将删除这两个项目。以下是代码:

protected void btn_remove_Click(object sender, EventArgs e)        
{            
    for (int i = 0; i < UPCList.Items.Count; i++)            
    {                
        if (UPCList.Items[i].Selected)                
        {                    
            var item = UPCList.Items[i];                    
            var frcID = item.Value;                    
            _itemNumberRepository.Delete(frcID);                
        }            
    }             
    Response.Redirect("WebForm2.aspx");            
    Response.End();        
}
public string Delete(string itemCode)        
{            
    string connectionString = foobar             
    Int32 returnDeleted = 0;             
    string deleteUpcCode =            
    "DELETE FROM compare1 "            
    + string.Format("WHERE itemcode = '{0}'",itemCode);  

    using (SqlConnection connection = new SqlConnection(connectionString))            
    {                
        SqlCommand command = new SqlCommand(deleteUpcCode, connection);                
        command.Connection.Open();                
        returnDeleted = command.ExecuteNonQuery();                
        command.Connection.Close();            
    }            
    return returnDeleted.ToString();        
}

我被告知要使用SQL中的自动递增ID,这样每行都会有一个唯一的ID,所以我只能删除选中的行。但是,我甚至不知道如何做到这一点。我已经在SQL中为itemcode列打开了identity选项,但除此之外,我迷路了。如何使用该ID仅从asp?

的复选框列表中删除所选项目

1 个答案:

答案 0 :(得分:1)

当您说项目“完全相同”时,您的意思是他们拥有相同的商品代码吗?项目代码可以在您的系统中复制(即正确的业务规则)?

如果是这样,那就是为什么你需要为每一行自动生成ID,以便每一行都是唯一的。这意味着您需要在DELETE查询中使用该ID,而不是项目代码。

通常,在(ASP.NET)Web应用程序中,这种事情是通过“网格”完成的。您可以使用带有两列的GridView:一列是复选框,另一列只是显示商品代码的标签。每行都绑定到ID字段。

因此,我建议您先查看GridView(网上有很多示例):MSDN documentation for GridView