isCommend = int.Parse(sdr["GoodsSpecial"].ToString());显示输入字符串的格式不正确,请教各位。
这是GridView里的LinkButton特价按钮,前台代码如下:<asp:TemplateFieldHeaderText="特价"ShowHeader="False"...
这是GridView里的LinkButton特价按钮,前台代码如下:
<asp:TemplateField HeaderText="特价" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="btnCommedn" runat="server" CausesValidation="false" CommandArgument='<%# Bind("GoodsID")%>'
CommandName="" OnClick="btnCommend_Click" Text='<%# Eval("GoodsSpecial").ToString()=="1" ?"是":"否"%>'
ToolTip="特价"></asp:LinkButton>
</ItemTemplate>
后台Click事件,数据库Clothing表中GoodsSpecial 内容为是或否。
protected void btnCommend_Click(object sender, EventArgs e)
{
int id = Convert.ToInt32(((LinkButton)sender).CommandArgument.ToString());
int isCommend = 1;
SqlDataReader sdr;
sdr = data.GetDataReader("select GoodsSpecial from [Clothing] where GoodsID=" + id);
sdr.Read();
isCommend = int.Parse(sdr["GoodsSpecial"].ToString());
//如果原来为推荐则改为不推荐
if (isCommend == 1)
{
data.RunSql("update [Clothing] set GoodsSpecial='否' where GoodsID=" + id);
}
else
{
data.RunSql("update [Clothing] set GoodsSpecial='是' where GoodsID=" + id);
}
js.Alertjs("设为特价婚纱成功!");
//绑定
Get_Info();
} 展开
<asp:TemplateField HeaderText="特价" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="btnCommedn" runat="server" CausesValidation="false" CommandArgument='<%# Bind("GoodsID")%>'
CommandName="" OnClick="btnCommend_Click" Text='<%# Eval("GoodsSpecial").ToString()=="1" ?"是":"否"%>'
ToolTip="特价"></asp:LinkButton>
</ItemTemplate>
后台Click事件,数据库Clothing表中GoodsSpecial 内容为是或否。
protected void btnCommend_Click(object sender, EventArgs e)
{
int id = Convert.ToInt32(((LinkButton)sender).CommandArgument.ToString());
int isCommend = 1;
SqlDataReader sdr;
sdr = data.GetDataReader("select GoodsSpecial from [Clothing] where GoodsID=" + id);
sdr.Read();
isCommend = int.Parse(sdr["GoodsSpecial"].ToString());
//如果原来为推荐则改为不推荐
if (isCommend == 1)
{
data.RunSql("update [Clothing] set GoodsSpecial='否' where GoodsID=" + id);
}
else
{
data.RunSql("update [Clothing] set GoodsSpecial='是' where GoodsID=" + id);
}
js.Alertjs("设为特价婚纱成功!");
//绑定
Get_Info();
} 展开
3个回答
展开全部
很明显sdr["GoodsSpecial"].ToString() 内容为 文字 “是”或“否” 使用int.Parse转换肯定会错。
isCommend = int.Parse(sdr["GoodsSpecial"].ToString()); 修改为
isCommend = "是".Equals(sdr["GoodsSpecial"].ToString()) ? 1 : 0;
isCommend = int.Parse(sdr["GoodsSpecial"].ToString()); 修改为
isCommend = "是".Equals(sdr["GoodsSpecial"].ToString()) ? 1 : 0;
追问
非常感谢出错的问题是解决了,但是GridView里显示的特价是或否不会改一直是否没变,在我按了以后提示成功了,数据库里也的确是改了,不知道是怎么回事?
追答
因为你在btnCommend_Click事件中只做了,数据库的修改提交,界面上的数据没有重新读取。
有2个方法可以解决:
1、重新加载页面
2、web页写一个js方法,在btnCommend_Click事件中调用,用于修改GridView的数据。
展开全部
请检查下你的数据库中 GoodsSpecial 这个栏位的类型,我怀疑你的栏位是整型,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sdr["GoodsSpecial"].ToString()是数字吗?
追问
GoodsSpecial数据库里是字符串,存是或者否,但是前台HTML里这个按钮有
'
CommandName="" OnClick="btnCommend_Click" Text=''
这个1的条件语句是不是和后台 if (isCommend == 1)有关系?有点被搞晕了
追答
你写的isCommend = int.Parse(sdr["GoodsSpecial"].ToString());isCommend的值就是Eval("GoodsSpecial").ToString()的值。但是sdr["GoodsSpecial"].ToString()是数字么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询