0

我在GridView中使用了響應式DataTable類。在GridView的EditItemTemplate上禁用排序

<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爲Edit/Update/Cancel添加的列進行排序?

回答

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); 
    } 
+0

我嘗試過'{「orderable」:false,「targets」:['_all']}',它根本不禁止排序。每個列出現的箭頭儘管如此 – techspider

+0

我更新了帖子 – levent

+0

我不想單獨控制每個列,我想禁用所有列的排序。除了用CommandField添加的列以外,它將禁用我的腳本。 – techspider