0

データが入力されたグリッドビューがあり、チェックボックスの選択に基づいて、編集フォームで 1 つのフィールドを非表示にしたいと考えています。クライアント側またはサーバー側のコードで列を非表示にする方がよいものはありますか? 参照用に以下のコードを見つけてください (以下は、チェックボックスを選択したときの devexpress Grid の 4 つの列 (4 つのフィールド) です)次に、列 (ドロップダウン) の 1 つを非表示にする必要があります)。

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

2 に答える 2

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でアクセスできるように、非表示にする列にクライアントインスタンス名も割り当てる必要があることに注意してください。お役に立てれば!:)

于 2014-01-23T01:20:17.030 に答える