Скрыть конкретное поле gridview (Devexpress grid), основанное на выборе флажка

У меня есть сетка, заполненная данными и основанная на выборе Chekbox. Я хотел бы скрыть одно поле в форме редактирования. Кто-нибудь может помочь, пожалуйста, по этому вопросу, что было бы лучше, чтобы скрыть столбец на стороне клиента или на стороне сервера? Пожалуйста, найдите нижеприведенный код для справки (ниже 4 столбца (4 поля) в devexpress Grid, когда мы устанавливаем флажок тогда один из столбцов (Dropdown) должен быть скрыт.).

<dx:GridViewDataTextColumn FieldName="Name" VisibleIndex="1"  Caption="Name">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="Email" VisibleIndex="2"  Caption="Email">
 </dx:GridViewDataTextColumn>
<dx:GridViewDataCheckColumn FieldName="IsGraduate" VisibleIndex="3" Caption="Is Graduate ">
</dx:GridViewDataCheckColumn>
<dx:GridViewDataComboBoxColumn Caption="Degree" FieldName="Degree" 
 ShowInCustomizationForm="True" VisibleIndex="4">
<PropertiesComboBox DataSourceID="DegreeDataSource" TextField="Degree"  ValueField="Id">
</PropertiesComboBox>
</dx:GridViewDataComboBoxColumn>

2 ответа

Вы пытались использовать видимость EditFormSetting для нужного столбца? Посмотрите на пример ниже

        <dx:GridViewDataComboBoxColumn FieldName="color" Caption="#" VisibleIndex="2" ReadOnly="True"
            Width="25px">
            <HeaderStyle HorizontalAlign="Center" />
            <PropertiesComboBox DataSourceID="ColoredStatusSource" TextField="name" ValueField="id"
                EnableSynchronization="False" IncrementalFilteringMode="Contains" ValueType="System.Int32">
            </PropertiesComboBox>
            <EditFormSettings Visible="False" />
        </dx:GridViewDataComboBoxColumn>

Было бы лучше, если бы вы скрывали столбец с помощью событий на стороне клиента для предотвращения обратных вызовов. Используйте следующие коды в качестве руководства:

    Protected Sub dgView_001_CellEditorInitialize(sender As Object, e As DevExpress.Web.ASPxGridView.ASPxGridViewEditorEventArgs) Handles dgView_001.CellEditorInitialize

    If e.Column.FieldName = "IsGraduate" Then

        Dim chk As DevExpress.Web.ASPxEditors.ASPxCheckBox = New DevExpress.Web.ASPxEditors.ASPxCheckBox()

        chk = TryCast(e.Editor, DevExpress.Web.ASPxEditors.ASPxCheckBox)

        chk.ClientInstanceName = "chkIsGraduate"

        chk.ClientSideEvents.CheckedChanged = "function(s, e){ //if checked = true, hide column you want to hide }"

   ElseIf e.Column.FieldName = "Degree" Then

        Dim cmb As DevExpress.Web.ASPxEditors.ASPxComboBox = New DevExpress.Web.ASPxEditors.ASPxComboBox()

        cmb = TryCast(e.Editor, DevExpress.Web.ASPxEditors.ASPxComboBox)

        cmb.ClientInstanceName = "cmbDegree"

   End If

   End Sub

Обратите внимание, что вам также следует присвоить имя экземпляра клиента столбцу, который вы хотите скрыть, чтобы получить к нему доступ в javascript. Надеюсь это поможет!:)

Другие вопросы по тегам