0

我有一个gridview填充数据和基于Chekbox选择我想隐藏editform上的一个字段。 任何人都可以请指导一下,有什么更好的隐藏客户端或服务器端代码的列?,请找到下面的代码供您参考(下面是devexpress网格中的4列(4个字段),当我们选择复选框,然后列(Dropdown)之一应该隐藏。)。隐藏基于复选框选择的特定gridview(Devexpress网格)字段

<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> 
+0

上面看起来像asp.net。你确定标签devexpress-windows-ui或devepxress-wpf是相关的吗? – surfmuggle

+0

是的,很确定,我正在使用Asp.net并使用devepxress Grid。 – Vishal

+0

也许这只是我,但[asp.net webforms](https://demos.devexpress.com/ASPxGridViewDemos/DataBinding/LinqDataSourceServerMode.aspx)看起来接近上面的代码。 [mvc](https://demos.devexpress.com/MVCxGridViewDemos/DataBinding/DataBindingToLargeDatabase)代码看起来不像您的代码。在[asp.net的演示页面](https://www.devexpress.com/Products/NET/Controls/ASP/demos.xml)中没有提及wpf。你使用的是mvc还是webforms? – surfmuggle

回答

0

您是否尝试将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> 
0

如果你通过使用客户端事件来防止回调来隐藏列会更好。 使用下列代码作为指南:

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访问它的列。希望这可以帮助! :)