Search code examples
c#asp.netdevexpressaspxgridview

How to bind CheckBox in ASPxGridView EditItemTemplate


I am working with DevExpress Asp.Net Controls, In GridView EditTempalte have to add checkbox, have to bind checkbox check and uncheck with database column property and on new item insert default unchecked.

here my code.

<dx:ASPxGridView ID="ASPxGridView3" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource3" 
                 KeyFieldName="UniqueID" Theme="Default">
    <SettingsSearchPanel Visible="True" />
    <Columns>
        <dx:GridViewCommandColumn ShowDeleteButton="True" ShowEditButton="True" ShowInCustomizationForm="True" 
            ShowNewButtonInHeader="True" VisibleIndex="0">
        </dx:GridViewCommandColumn>
        <dx:GridViewDataTextColumn FieldName="UniqueID" ReadOnly="True" ShowInCustomizationForm="True" 
            Visible="False" VisibleIndex="1">
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="ResourceID" ShowInCustomizationForm="True" Visible="False" 
            VisibleIndex="2" ReadOnly="True">
            <EditFormSettings Visible="False" />
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="ResourceName" ShowInCustomizationForm="True" VisibleIndex="3">
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="Color" ShowInCustomizationForm="True" Visible="False" VisibleIndex="4">
            <EditFormSettings Visible="False" />
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="CustomField1" ShowInCustomizationForm="True" Visible="False" VisibleIndex="5">
            <EditFormSettings Visible="False" />
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="category_ClientID" ShowInCustomizationForm="True" 
            VisibleIndex="6" Visible="False">
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="IsAvailable" PropertiesTextEdit-NullDisplayText="true" 
            ShowInCustomizationForm="True" VisibleIndex="7">
            **<EditItemTemplate>
                <dx:ASPxCheckBox ID="chkIsAvailableEdit" runat="server" Checked="true" Style="margin-left: 18px"
                    CheckState="Checked" Cursor="pointer" EnableDefaultAppearance="False"
                    EnableTheming="False">
                    <CheckedImage Height="26px" Url="~/images/switchon.png" Width="70px">
                    </CheckedImage>
                    <UncheckedImage Height="26px" Url="~/images/switchoff.png" Width="70px">
                    </UncheckedImage>
                    <GrayedImage Url="~/images/switchoff.png">
                    </GrayedImage>
                </dx:ASPxCheckBox>
            </EditItemTemplate>**
        </dx:GridViewDataTextColumn>
    </Columns>
</dx:ASPxGridView>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:NCompassWebsiteConnectionString %>" 
    DeleteCommand="DELETE FROM [SchResources] WHERE [UniqueID] = @UniqueID" 
    InsertCommand="INSERT INTO [SchResources] ([ResourceID], [ResourceName], [Color], [CustomField1], [category_ClientID], 
            [IsAvailable]) VALUES (@ResourceID, @ResourceName, @Color, @CustomField1, @category_ClientID, @IsAvailable)" 
    SelectCommand="SELECT * FROM [SchResources] WHERE ([category_ClientID] = @category_ClientID)" 
    UpdateCommand="UPDATE [SchResources] SET [ResourceID] = @ResourceID, [ResourceName] = @ResourceName, [Color] = @Color, 
            [CustomField1] = @CustomField1, [category_ClientID] = @category_ClientID, [IsAvailable] = @IsAvailable WHERE [UniqueID] = @UniqueID">
    <DeleteParameters>
        <asp:Parameter Name="UniqueID" Type="Int32" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="ResourceID" Type="Int32" />
        <asp:Parameter Name="ResourceName" Type="String" />
        <asp:Parameter Name="Color" Type="Int32" />

        <asp:Parameter Name="CustomField1" Type="String" />
        <asp:SessionParameter Name="category_ClientID" SessionField="ClientID" Type="String" />
        <asp:Parameter Name="IsAvailable" Type="String" />
    </InsertParameters>
    <SelectParameters>
        <asp:SessionParameter Name="category_ClientID" SessionField="ClientID" Type="String" />
        <%--<asp:Parameter DefaultValue="62" Name="category_ClientID" Type="String" />--%>
    </SelectParameters>
    <UpdateParameters>
        <asp:Parameter Name="ResourceID" Type="Int32" />
        <asp:Parameter Name="ResourceName" Type="String" />
        <asp:Parameter Name="Color" Type="Int32" />

        <asp:Parameter Name="CustomField1" Type="String" />
        <asp:SessionParameter Name="category_ClientID" SessionField="ClientID" Type="String" />
        <asp:Parameter Name="IsAvailable" Type="String" />
        <asp:Parameter Name="UniqueID" Type="Int32" />
    </UpdateParameters>
</asp:SqlDataSource>

Solution

  • Simply use the built-in GridViewDataCheckColumn (specially intended for displaying/editing boolean values) instead of the GridViewDataTextColumn (the default) one:

    <%--
    <dx:GridViewDataTextColumn FieldName="IsAvailable">
    </dx:GridViewDataTextColumn
    --%>
    
    <dx:GridViewDataCheckColumn FieldName="IsAvailable">
    </dx:GridViewDataCheckColumn
    

    Check this demo.

    Or, use the standard two-way binding expression (the Bind method) to bind ASPxCheckBox with the necessary row's FieldName:

    <dx:GridViewDataTextColumn FieldName="IsAvailable">
        <EditItemTemplate>
            <dx:ASPxCheckBox ID="chkIsAvailableEdit" ... Value='<%#Bind("IsAvailable")'>
            </dx:ASPxCheckBox>
        </EditItemTemplate>
    </dx:GridViewDataTextColumn>
    

    Check this demo.