我使用以下代码删除我的网格行。此外,我需要删除$符号,因为删除它时会导致删除时出现问题。 我使用此代码将$ sign替换为空白空间,但它没有帮助。任何人都可以纠正我吗?
string Dollar = Dollars.Text.ToString();
string dolreplace = Dollar.Substring(1, Dollar.Length - 1);
所以我需要删除出现在Dollar列的美元符号。
protected void Details_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
Label ECode = (Label)Details.Rows[e.RowIndex].FindControl("lblCode");
Label Dollars = (Label)Details.Rows[e.RowIndex].FindControl("lblDollars");
string Dollar = Dollars.Text.ToString();
string RemoveDollar = Dollar.Substring(1, Dollar.Length - 1);
SqlConnection con = new SqlConnection(CS);
con.Open();
SqlCommand cmd = new SqlCommand("Delete from Application where Code= @Code and Dollar_Amount= @Dollars", con);
cmd.Parameters.AddWithValue("@Code", Convert.ToDouble(Code.Text));
cmd.Parameters.AddWithValue("@Dollars", Convert.ToInt32(RemoveDollar));
cmd.ExecuteNonQuery();
con.Close();
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Deleted successfully');", true);
BindGrid();
}
答案 0 :(得分:5)
问题:您正在将Label
转换/分配到字符串变量中。
解决方案:您需要使用Label的Text
属性将其值(Dollars.Text)
分配给String变量。
解决方案1:
替换它:
string Dollar = Dollars.ToString();
有了这个:
string Dollar = Dollars.Text.ToString();
OR
解决方案2:如果您要删除使用Substring()
功能的第一个字符
string Dollar = Dollars.Text.ToString();
string dolreplace = Dollar.Substring(1, Dollar.Length-1);
解决方案3:您在单引号中包含double和int值。您只需要在单引号中包含String类型。
你的uery向SQL Injection Attacks
开放。所以我建议你使用parameterised queries
来避免它们。
试试这个:
SqlCommand cmd = new SqlCommand("Delete from Application where Code= @Code and Yearly_Dollar_Amount= @DollarAmt", con);
cmd.Parameters.AddWithValue("@Code",Convert.ToDouble(Code.Text));
cmd.Parameters.AddWithValue("@DollarAmt",int.Parse(dolreplace,System.Globalization.CultureInfo.InvariantCulture));
cmd.ExecuteNonQuery();