在这里,我尝试在单击按钮btndownloadpost时更新数据库中的一个dwncount列的下载次数。点击它显示的按钮
"输入字符串的格式不正确"行中的错误int countid = Convert.ToInt32(e.CommandArgument.ToString());
db中的countid和dwncount列是int数据类型。 以下是我使用的完整代码。
按钮如下所示
<div>
<asp:Button ID="btndownloadpost" CommandName="download" CommandArgument='<%#Eval("countid") %>' CssClass="btn btn-info" runat="server" Text="Download " OnCommand="btndownloadpost_Command" />
</div>
按钮后面的代码
protected void btndownloadpost_Command(object sender, CommandEventArgs e)
{
if (e.CommandName== "download")
{
int countid = Convert.ToInt32(e.CommandArgument.ToString());
int i = c.updatedwncount(countid, Convert.ToInt32(ViewState["click"]));
if (i > 0)
{
if (ViewState["click"] != null)
{
count = (int)ViewState["click"] + 1;
}
ViewState["click"] = count;
Label18.Text = "Updated ";
}
}
}
使用的方法
public int updatedwncount(int countid, int dwncount)
{
SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["myconnection"].ConnectionString);
string sql = "update tbltry set dwncount=dwncount+1 where countid=@countid";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@dwncount", dwncount);
cmd.Parameters.AddWithValue("@countid", countid);
try
{
con.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
}
}
答案 0 :(得分:0)
使用TryParse而不是Convert.ToInt32:
int countid;
int.TryParse(e.CommandArgument.ToString(), out countid);
如果Eval表达式暗示输入无法转换为int
,则Convert.Int32方法将发出异常。另一方面,TryParse将返回boolean
值,可以在下一个执行计划中进行评估。
参考:Parsing String: Input string was not in a correct format. #
答案 1 :(得分:0)
我认为您的countid
为空。因此检查Null值然后将其解析为int。
int countid = String.IsNullOrEmpty(e.CommandArgument.ToString()) ? 0 : Convert.ToInt32(e.CommandArgument.ToString());