2013-01-08 12 views
5

मैं एमवीसी.NET में एक केंडो यूआई ग्रिड का उपयोग कर रहा हूं।एमवीसी में केंडौई ग्रिड: क्या कुछ कॉलम पर फ़िल्टर छिपाने का कोई तरीका है?

ग्रिड प्रत्येक कॉलम के लिए कॉलम फ़िल्टर दिखाने के लिए कॉन्फ़िगर किया गया है।

मेरे कुछ कॉलम फ़िल्टर करने योग्य नहीं हैं, हालांकि, मैं फ़िल्टर को छिपाना चाहता हूं।

क्या सी # पक्ष से इसे कॉन्फ़िगर करने का कोई तरीका है? (सीएसएस या जेएस का उपयोग नहीं)।

उत्तर

14

अपने कोड में, आप शायद की तरह कुछ है , लेकिन मैं ग्रिड की ऑटो जेनरेट() सुविधा का उपयोग कर रहा था, इसलिए फ़िल्टर करने योग्य सेटिंग में कोई आसान पहुंच नहीं है। उस मामले के लिए

एक समाधान नहीं है:

var gb = Html.Kendo().Grid(data).Name("test"); 
gb.Columns(columns => { columns.AutoGenerate(true); }); 

// !!! Hide filter for first column in grid. 
gb.Columns((columns) => { (columns.Container.Columns[0] as IGridBoundColumn).Filterable=false; }); 

gb.Filterable(filtering => filtering.Enabled(true)); 

gb.DataSource(ds => ds 
       .Ajax() 
       .ServerOperation(true) 
       .Model(model => model.Id("A")) 
       ); 
gb.Render(); 
1

जहाँ तक मैं कह सकता हूं, आपको columns.filterable कॉन्फ़िगरेशन प्रॉपर्टी को उन कॉलम के लिए 'झूठी' पर सेट करने में सक्षम होना होगा, जिन्हें आप फ़िल्टर नहीं करना चाहते हैं, क्योंकि यह 'सत्य' पर डिफ़ॉल्ट है (देखें डॉक्स: columns.filterable)

चाहे आप इसे सी # पक्ष से कर सकते हैं, इस पर निर्भर करेगा कि आपके कोड में केंडो ग्रिड कैसे शुरू किया जा रहा है।

<asp:Content ContentPlaceHolderID="MainContent" runat="server"> 
<%: Html.Kendo().Grid(Model) 
    .Name("Grid") 
    .Columns(columns => 
    { 
     columns.Bound(p => p.ProductID).Groupable(false); 
     columns.Bound(p => p.ProductName); 
     columns.Bound(p => p.UnitPrice); 
     columns.Bound(p => p.UnitsInStock); 
    }) 
    .Groupable() 
    .Pageable() 
    .Sortable() 
    .Scrollable() 
    .Filterable() 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .Read(read => read.Action("Products_Read", "Grid")) 
    ) 
%> 
</asp:Content> 

आप चाहते हैं ProductID स्तंभ फ़िल्टर नहीं किया जा रहा है, तो आप कहना चाहिए:

<asp:Content ContentPlaceHolderID="MainContent" runat="server"> 
<%: Html.Kendo().Grid(Model) 
    .Name("Grid") 
    .Columns(columns => 
    { 
     columns.Bound(p => p.ProductID).Groupable(false).Filterable(false); 
     columns.Bound(p => p.ProductName); 
     columns.Bound(p => p.UnitPrice); 
     columns.Bound(p => p.UnitsInStock); 
    }) 
    .Groupable() 
    .Pageable() 
    .Sortable() 
    .Scrollable() 
    .Filterable() 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .Read(read => read.Action("Products_Read", "Grid")) 
    ) 
%> 
</asp:Content> 
+0

मुझे लगता है कि columns.filterable सभी स्तंभों पर लागू होता है। अलग-अलग कॉलम सेट करने का कोई तरीका नहीं है जो मुझे मिल सकता है। –

+1

प्रति कॉलम निर्दिष्ट करने के लिए आपको 'कॉलम' सरणी में एक प्रविष्टि प्रदान करने की आवश्यकता है जिसे फ़िल्टर करने योग्य विशेषता को गलत पर सेट किया गया हो। फिर, ग्रिड बनाने के लिए आपका कोड कैसे स्थापित किया गया है, इस पर निर्भर नहीं हो सकता है –

0

मैं प्रश्न में यह उल्लेख नहीं था

3

आप स्तंभों की स्थापना नहीं कर रहे हैं, तो आप फिल्टर बटन के बाद ग्रिड इस तरह के डेटाबाउंड घटना के रूप में, आरंभ नहीं हो जाता छिपाने सकता है। यहाँ एक तरीका है, एक विशेष क्षेत्र पर फिल्टर बटन छुपा:

$("#MyGrid").find(".k-header[data-field='Pct_positive']").find(".k-grid-filter").css("visibility","hidden"); 

उन सब को छुपाने के लिए ...

$("#MyGrid").find(".k-header").find(".k-grid-filter").css("visibility","hidden"); 
0
क्लाइंट साइड के लिए

(jQuery) केन्डो ग्रिड आप फ़िल्टर रख सकते हैं: झूठी, फिल्टर करने योग्य रखने के बाद व्यक्तिगत कॉलम के लिए: सही, पूरे ग्रिड के लिए।

उदाहरण के लिए।

क्षेत्र: "Margin01", चौड़ाई: 40, फ़िल्टर: झूठे, शीर्षक: "0-"

संबंधित मुद्दे

 संबंधित मुद्दे