2012-08-07 51 views
0

VS2010 .netgridview中的可选复选框

我有一个gridview显示来自数据库的信息。其中一个字段是复选框。我想要做的是能够点击复选框并将其更新回数据库,但复选框字段变灰。以下是我的标记。搜索使复选框可点击不会返回任何有用的结果。

<asp:GridView ID="gvSiteInfo" runat="server" BackColor="White" 
    GridLines="Vertical" AutoGenerateColumns="False" OnSorting="gvSiteInfo_Sorting" 
    onselectedindexchanged="gvSiteInfo_SelectedIndexChanged" 
    AllowSorting="True"> 
    <Columns> 
     <asp:BoundField DataField="prodServer" HeaderText="Production Server" 
      SortExpression="prodServer" /> 
     <asp:BoundField DataField="prodHostHeader" HeaderText="Production Host Header" 
      SortExpression="prodHostHeader" /> 
     <asp:BoundField DataField="prodIP" HeaderText="Production IP Address" 
      SortExpression="prodIP" /> 
     <asp:CheckBoxField DataField="testComplete" HeaderText="Testing Completed" 
      SortExpression="testComplete" /> 
    </Columns> 
</asp:GridView> 

回答

1

您应该使用templatefield

     <asp:TemplateField> 
          <ItemTemplate> 
           <asp:CheckBox ID="chkSelector" runat="server" 
            ToolTip="Select row?" /> 
          </ItemTemplate> 
         </asp:TemplateField> 

也似乎并没有设置基于数据库的值:

Checked='<%# DataBinder.Eval(Container, "DataItem.IsChecked") %>' 
+0

当我使用'的'/>''我得到一个“InvalidCastException未被用户代码处理”的错误。但是,数据库返回'true'或'false',所以我不明白为什么会有错误。 – Mike 2012-08-07 15:40:41

+0

问题解决了。 'checked'正在寻找布尔值,我认为通过'true'或'false'会满足这个要求。但我必须做的是'检查='<%#DataBinder.Eval(容器,“DataItem.testComplete”)。toString()。Equals(“true”)' – Mike 2012-08-07 16:19:01

+0

@Mike伟大的工作,是的,如果你正在存储他们在数据库中为“真”或“假”。 – JonH 2012-08-07 16:19:46