关于将数据库中的bit型数据绑定到DataGrid中的CheckBox的Checked属性的问题。

 

<asp:CheckBox id=RiskFormCheckBox runat="server" Checked='<%# (bool)DataBinder.Eval(Container.DataItem, "RiskForm") %>'">
                                        </asp:CheckBox>

 用以上的语句将数据库中的bit型数据绑定到DataGrid中的CheckBox的Checked属性时,出现错误:
System.InvalidCastException: Specified cast is not valid.
后来发现可能是从数据库中取出的bit型数据中存在空值的在原因。
后来使用以下的语句还是出现错误:

<asp:CheckBox id=RiskFormCheckBox runat="server" Checked='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "RiskForm")) %>'     </asp:CheckBox>
最让我不明白的是我用下面的这段代码,既不报错,也不能正确将数据绑进去。郁闷,为什么绑定的那个语句的值没被赋给Checked呢:
<asp:CheckBox id=RiskFormCheckBox runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "RiskForm")=="True" %>'     </asp:CheckBox>

没办法只能自己写一个方法,然后将Checked属性绑定到这个方法中了。
在.cs文件中增加了一个方法ConvertToBoolean:
 1        public bool ConvertToBoolean(string str)
 2        {
 3            if(str == "True")
 4            {
 5                return true;
 6            }

 7            else
 8            {
 9                return false;
10            }

11        }
之后将绑定语句改成:
<asp:CheckBox id=RiskFormCheckBox runat="server" Checked='<%# ConvertToBoolean(DataBinder.Eval(Container.DataItem, "RiskForm").ToString()) %>'>
                                        
</asp:CheckBox>
这样就可以正常显示了。
当然也可直接从源头上控制这种情况的发生,在查询数据库记录时使用IsNull方法了。
posted @ 2006-12-28 11:16  Chistopher Yang  阅读(1551)  评论(0编辑  收藏  举报