Скрыть конкретное поле 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. Надеюсь это поможет!:)