【问题标题】:Disable sorting on EditItemTemplate in GridView在 GridView 中禁用 EditItemTemplate 的排序
【发布时间】:2017-02-28 19:36:26
【问题描述】:

我在我的 GridView 中使用响应式 DataTable 类。

<asp:GridView ID="myGrid" runat="server" EnableViewState="False"
         CssClass="table table-striped table-bordered table-hover">
    <Columns>
    <asp:CommandField ShowEditButton="true" CausesValidation="true" />

使用下面的脚本:

<script>
    $(document).ready(function () {
        $("#<%= myGrid.ClientID %>").DataTable({
            responsive: true,
            "columnDefs": [{ "orderable": false, "targets": ['_all'] }],
        });
    });
</script>

此脚本禁用除我的第一列之外的所有列的排序选项,第一列具有使用 GridView 的ShowEditButton="true" 启用的编辑按钮。

我可以在页面中看到呈现的 HTML,第一列仍然有 class="sorting_asc",而所有其他列都有 class="sorting_disabled"。如何禁用 GridView 为编辑/更新/取消添加的列的排序?

【问题讨论】:

    标签: jquery asp.net twitter-bootstrap responsive-design datatables


    【解决方案1】:

    您需要将"targets": ['_all'] 更改为"targets": '_all'

    “如何在 GridView 添加的列上禁用排序以进行编辑/更新/取消?”

    如果你想单独配置每一列,看下面..

    “columnDefs”是列定义的对象数组。你需要为每一列定义这个{ "orderable": false, "targets": ['_all'] }

    您可以通过gridview编辑更新模式在服务器端准备new {"orderable": false ...}对象数组..并注入您的脚本..

    <script>
    $(document).ready(function () {
        $("#<%= myGrid.ClientID %>").DataTable({
            responsive: true,
            "columnDefs": <%= ColumnDefinitions %>,
        });
    });
    

    服务器端..

        public string ColumnDefinitions;
        protected override void OnPreRender(EventArgs e)
        {
            List<object> columns = new List<object>();
            for (int i = 0; i < myGrid.Columns.Count; i++)
                columns.Add(new { orderable = !(myGrid.Columns[i] is CommandField) });
    
            ColumnDefinitions = Newtonsoft.Json.JsonConvert.SerializeObject(columns);
            base.OnPreRender(e);
        }
    

    【讨论】:

    • 我已经尝试过{ "orderable": false, "targets": ['_all'] },它根本没有禁用排序。尽管如此,箭头仍然出现在每一列
    • 我不想单独控制每一列,我想禁用所有列的排序。除了使用 CommandField 添加的列之外,它正在使用我的脚本禁用所有列。
    • { "orderable": false, "targets": ['_all'] }更改为{ "orderable": false, "targets": '_all'}
    • 是的,我也试过了,但结果是一样的;我看到所有列上的排序箭头
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2014-05-21
    • 2012-08-28
    • 2017-06-27
    • 2010-09-15
    相关资源
    最近更新 更多