【问题标题】:hide specific gridview (Devexpress grid) field based on checkbox selection根据复选框选择隐藏特定的gridview(Devexpress网格)字段
【发布时间】:2014-01-21 17:42:29
【问题描述】:

我有一个填充了数据的网格视图,并且基于 Chekbox 选择,我想在 editform 上隐藏一个字段。 任何人都可以请指导,隐藏客户端或服务器端代码的列会更好吗?,当我们选择复选框时,请在 devexpress Grid 中找到以下代码供您参考(以下是 4 列(4 个字段)那么其中一列(下拉)应该是隐藏的。)。

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

【问题讨论】:

  • 上面看起来像asp.net。你确定标签 devexpress-windows-ui 或 devpxress-wpf 是相关的吗?
  • 是的,很确定,我正在使用 Asp.net 并使用 devpxress Grid。
  • 也许只有我一个人,但asp.net webforms 看起来与您上面的代码很接近。 mvc 代码看起来不像您的代码。在demo page for asp.net 上没有提到wpf。您使用的是 mvc 还是 webforms?
  • 我正在使用 asp.net 网络表单

标签: asp.net devexpress aspxgridview aspxcombobox devexpress-mvc


【解决方案1】:

您是否尝试对必要的列使用 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>

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多