正在删除我的字符串ID上的行

本文关键字:ID 字符串 删除 我的 | 更新日期: 2023-09-27 18:00:59

我有这个gv_Storagepricing_RowDeleting方法

protected void gv_Storagepricing_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    string result = null;
    storageprice ss = new storageprice();
    string categoryID = gv_Storagepricing.DataKeys[e.RowIndex].Value.ToString();
    result = ss.StoragePricingDelete(categoryID);
}

这是StoragePricingDelete方法的代码

public string StoragePricingDelete(string ID)
{
    string queryStr = "DELETE FROM StoragePricing WHERE Pricing_ID = @ID";
    SqlConnection conn = new SqlConnection(connStr);
    SqlCommand cmd = new SqlCommand(queryStr, conn);
    cmd.Parameters.AddWithValue("@ID", ID);
    conn.Open();
    int nofRow = 0;
    nofRow = cmd.ExecuteNonQuery();
    conn.Close();
    return nofRow;
}

错误状态

无法将类型"int"隐式转换为"string">

我真的是个新手。

正在删除我的字符串ID上的行

错误告诉您,您没有按照预期调用StoragePricingDelete方法。

要调用一个方法,您需要在最后使用()编写方法调用,并且可能在方括号之间使用一些参数,就像您的情况一样。

如果没有括号,您将尝试将对该方法的引用传递给int变量(显然无效(,而不是调用该方法并将该方法的返回值分配给您的变量。

在这种情况下,您需要调用这样的方法:

result = ss.StoragePricingDelete("pricing id value goes here"); 

您必须在括号之间传递定价id参数。不确定它的正确值是多少,你必须弄清楚。

看看下面的StoragePricingDelete方法代码

public string StoragePricingDelete(string ID)
{
    string queryStr = "DELETE FROM StoragePricing WHERE Pricing_ID = @ID";
    SqlConnection conn = new SqlConnection(connStr);
    SqlCommand cmd = new SqlCommand(queryStr, conn);
    cmd.Parameters.AddWithValue("@ID", ID);
    conn.Open();
    int nofRow = 0;
    nofRow = cmd.ExecuteNonQuery();
    conn.Close();
    return nofRow;
}

当你有这个

public string StoragePricingDelete(string ID)

您告诉编译器StoragePricingDelete返回string,但是您返回的是nofRow

    int nofRow = 0;
    nofRow = cmd.ExecuteNonQuery();
    conn.Close();
    return nofRow;

这显然是一个int,所以这就是你得到错误的原因。您可以通过以下返回nofRow.ToString()来修复错误

public string StoragePricingDelete(string ID)
{
    string queryStr = "DELETE FROM StoragePricing WHERE Pricing_ID = @ID";
    SqlConnection conn = new SqlConnection(connStr);
    SqlCommand cmd = new SqlCommand(queryStr, conn);
    cmd.Parameters.AddWithValue("@ID", ID);
    conn.Open();
    int nofRow = 0;
    nofRow = cmd.ExecuteNonQuery();
    conn.Close();
    return nofRow.ToString();
}

我打赌您还不能运行调试,因为这行代码:return nofRow;因为它应该是return nofRow.ToString();