在GridView中禁用EditItemTemplate上的排序

时间:2017-02-28 19:36:27

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

我在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为编辑/更新/取消添加的列的排序?

1 个答案:

答案 0 :(得分:0)

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

“如何禁用GridView为编辑/更新/取消添加的列的排序?”

如果您想单独配置每个列,请查看以下内容。

“columnDefs”是columndefinitions的对象数组。您需要为每列定义此{ "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);
    }