出事原因:表名:books,字段名:isshowemail,字段类型:smallint,不允许null
绑定方法:<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("isshowemail") %>' Text="显示邮箱" />
添加数据:运行正确
修改数据报错:异常详细信息: System.InvalidCastException: 指定的转换无效。
源错误:
行 58: <td align="right" style="width:60px">隐藏:</td>
行 59: <td style="width:600px">
行 60: <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("ishide") %>' Text="" />
行 61: </td>
行 62: </tr>
显示数据绑定方法:<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Convert.ToBoolean(Eval("ishide")) %>'/>
Bind是双向绑定,Eval是单身绑定
不修改数据库,没有解决修改数据的办法
先记下:在 Web 窗体页数据绑定语法中可以使用此类的重载 Eval 方法。与标准数据绑定相比,这提供的语法更容易记忆,但是因为 DataBinder.Eval 提供自动类型转换,这会导致服务器响应时间变慢。(http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemwebuidatabinderclasstopic.asp)
最好的解决办法:修改数据库,所有这些用0、1表示的东东的字段改成bit型,然后呢,直接绑定