......
        <asp:TemplateColumn HeaderText="contract" SortExpression="contract">
          <ItemTemplate>
            <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "contract", "{0}") %>'/>
          </ItemTemplate>
          <EditItemTemplate>
            <asp:CheckBox runat="server" id="edit_Contract" Checked='<%# DataBinder.Eval(Container.DataItem, "contract") %>'/>
          </EditItemTemplate>
        </asp:TemplateColumn>
..........
      </Columns>代码如上↑↑↑↑,出错如下↓↓↓↓↓
229行出错。。装载页面的时候好好的。一点编辑就出错     指定的转换无效。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 指定的转换无效。源错误: 
行 227:          </ItemTemplate>
行 228:          <EditItemTemplate>
行 229:            <asp:CheckBox runat="server" id="edit_Contract" Checked='<%# DataBinder.Eval(Container.DataItem, "contract") %>'/>
行 230:          </EditItemTemplate>
行 231:        </asp:TemplateColumn>
contract的值是"0"或"1"字符串型的。。,想让CheckBox的Checked属性在contract值为"0"的时候为FALSE,contract值为"1" 的时候为TRUE。怎么办,请大侠们指点一下。。刚学ASP.net.请大家帮一下。。哈。

解决方案 »

  1.   

    Checked='<%# MyBool( DataBinder.Eval(Container.DataItem, "contract") %>'
    public bool MyBool(string contract)
    {
    if()
    return true;
    else
    return false
    }
      

  2.   

    自己写一个函数进行转换~
    在CS页面写一个函数
    private string change(string str)
    {
      if(str == "1")
         return "true";
      else
         return "false";
    }
    <asp:CheckBox runat="server" id="edit_Contract" Checked='<%# change((DataBinder.Eval(Container.DataItem, "contract")).ToString()) %>'/>
      

  3.   

    这个方法要用public的,if(contract=="1")返回的是bool true,否则是false
      

  4.   

    contract 使用bit型。
     <asp:CheckBox runat="server" id="edit_Contract" Checked='<%# DataBinder.Eval(Container.DataItem, "contract") %>'/>
      

  5.   

    <%# Convert.ToInt16(DataBinder.Eval(Container.DataItem, "contract"))==1 %>
      

  6.   

    <asp:CheckBox runat="server" id="edit_Contract" Checked='<%# (DataBinder.Eval(Container.DataItem, "contract")=="1") ? "true":"false" %>'/>
      

  7.   

    表中contract字段是bit型的。没错。。我写成上面的。。语法上没有问题吧。。不过还是有错。
    编译错误 
    说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误信息: CS0030: 无法将类型“string”转换为“bool”源错误: [没有相关的源行]
     
      

  8.   

    谢谢 microtea(小傅) 你的方法和我上面的一个结果。。怎么搞的呢。。晕呀。。
      

  9.   

    public bool MyBool(string contract)
    {
    if(contract == "1")
    return true;
    else
    return false
    }
    注意是两个"="的
      

  10.   

    那用这个
    public string MyBool(string contract)
    {
    if(contract == "1")
    return "true";
    else
    return "false"
    }
      

  11.   

    问题解决好。。
     chenhaoying(风雨无阻) 的方法可行。不用改代码。只把contract设成bit就可以用。。
    microtea(小傅) 的函数没有问题。。不用改数据库。我原来是nvarchar型的。。把下面的代码
    <asp:CheckBox runat="server" id="edit_Contract" Checked='<%# MyBool(DataBinder.Eval(Container.DataItem, "contract"))%>'/>
    改成:
    <asp:CheckBox runat="server" id="edit_Contract" Checked='<%# MyBool((DataBinder.Eval(Container.DataItem, "contract")).ToString())%>'/>
    就行了。。
    多谢二位了。。今天学了不少。。这里分太少了。我再开一帖。感谢二位。