0

我有一个 GridView,我将手动创建的数据表绑定到该 GridView。GridView 和 dataTable 都包含 2 列,Name 和 isBusy。我的 GridView 看起来像这样

<Columns>
   <asp:BoundField HeaderText="Name" DataField="Name" SortExpression="Name">           
   </asp:BoundField>       
   <asp:CheckBoxField DataField="isBusy" HeaderText="Busy" SortExpression="isBusy" />   
</Columns>

这很好用,除了 Busy 列是不可编辑的,除非您将特定行设置为编辑模式。我要求整个复选框列都是可检查的。所以我将列转换为模板,所以列看起来像这样:

<Columns>
   <asp:BoundField HeaderText="Name" DataField="Name" SortExpression="Name">           
   </asp:BoundField>       
   <asp:TemplateField HeaderText="Busy" SortExpression="isBusy">
       <ItemTemplate>
       <asp:CheckBox ID="isBusy" runat="server" Checked='<%# Eval("isBusy") %>' oncheckedchanged="CheckBoxBusy_CheckedChanged" />
       </ItemTemplate>
   </asp:TemplateField>       
</Columns>

现在,这会在运行时引发错误:

System.InvalidCastException was unhandled by user code
  Message="Specified cast is not valid."
  Source="App_Web_zzjsqlrr"
  StackTrace:
       at ASP.projects_aspx.__DataBinding__control24(Object sender, EventArgs e) in c:\Project\Users.aspx:line 189
       at System.Web.UI.Control.OnDataBinding(EventArgs e)
       at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)
       at System.Web.UI.Control.DataBind()
       at System.Web.UI.Control.DataBindChildren()
  InnerException:

知道为什么会这样吗?我需要的下一步是知道如何设置和获取复选框的状态(无法找到如何手动检查复选框)。

4

1 回答 1

0

好的,我克服了将复选框值转换为布尔值的错误:

Checked='<%# Convert.ToBoolean(Eval("isBusy")) %>'

Now, I can't seem to find how to manually check a specific checkbox and generate an event when a checkbox is clicked. Any ideas?

于 2010-04-20T02:12:18.707 回答