में फ़िल्टरिंग मैंने एक वेबग्रिड लागू किया है। छंटनी, पेजिंग और फ़िल्टरिंग एक साथ काम नहीं करते हैं। जब आप अकेले उनका उपयोग करते हैं तो वे काम करते हैं। जब आप तीनों को गठबंधन करते हैं, उसी समय फ़िल्टरिंग काम नहीं करती है।वेबग्रिड + पेजिंग + सॉर्टिंग + फ़िल्टरिंग में खो रहा है .NET 4.0
लक्षण:
परिणाम फ़िल्टर करें, फिर सॉर्ट करें।
या
परिणामसेट फ़िल्टर करें, फिर अगले पृष्ठ पर जाएं।
दोनों मामलों में, फ़िल्टर खो गया है। लेकिन यह पेज और सॉर्ट करता है।
पीछे कोड में: जब क्रिया विधि को सॉर्ट या पेजिनेशन के माध्यम से बुलाया जाता है, तो प्रत्येक फ़िल्टर पैरामीटर के लिए नल दिखाते हैं।
जब फ़िल्टर विधि के माध्यम से क्रिया विधि कहा जाता है, तो फ़िल्टर पैरामीटर आते हैं।
यह मुझे बताता है कि जब आप एक प्रकार या अंकन शुरू करते हैं कि यह फ़ॉर्म सबमिट नहीं कर रहा है।
public ActionResult MyPage(int? page, int? rowsPerPage,
string sort, string sortdir,
string orderNumber, string person, string product)
मैंने एसओ और अन्य जगहों पर चारों ओर देखा है। बहुत से उदाहरण हैं और लोग पूछ रहे हैं कि एक या दूसरे या तीनों को कैसे करना है। लेकिन मैंने केवल one with my issue देखा है, इसलिए मैं इसे यहां पोस्ट कर रहा हूं। (अपने रूप में अच्छी तरह अनसुलझी था)
मैं अपने पृष्ठ के रूप में लागू कर दिया है इस प्रकार है:
@using (Ajax.BeginForm("MyPage", null, new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "myGrid" }, new { id = "filter" }))
{
<div class="right">
<select id="rowsPerPage" name="rowsPerPage">
<option>15</option>
<option>25</option>
<option>50</option>
<option>75</option>
<option>100</option>
</select>
</div>
<div class="table">
<div class="tableRow">
<div class="tableCell">
Order Number
</div>
<div class="tableCell">
Person
</div>
<div class="tableCell">
Product
</div>
</div>
<div class="tableRow">
<div class="tableCell">
<input type="text" id="orderNumber" name="orderNumber" />
</div>
<div class="tableCell">
<input type="text" id="person" name="person" />
</div>
<div class="tableCell">
<input type="text" id="product" name="product" />
</div>
<div class="tableCell">
<input type="submit" class="button" value="Search" />
</div>
</div>
</div>
<br/>
<div id="myGrid">
@Html.Partial("_MyPage", Model)
</div>
}
ग्रिड इस तरह की एक आंशिक दृश्य के रूप में कार्यान्वित किया जाता है:
<script type="text/javascript">
$(document).ready(function() {
resetUI();
});
</script>
@{
var grid = new WebGrid(canPage: true, rowsPerPage: Model.rowsPerPage, canSort: true, ajaxUpdateContainerId: "grid", ajaxUpdateCallback: "resetUI");
grid.Bind(Model.rows, rowCount: Model.TotalRecords, autoSortAndPage: false);
@grid.GetHtml(
tableStyle: "fancyTable",
headerStyle: "header",
footerStyle: "footer",
rowStyle: "row",
alternatingRowStyle: "alt",
mode: WebGridPagerModes.Numeric | WebGridPagerModes.NextPrevious,
nextText: "Next",
previousText: "Previous",
htmlAttributes: new { id = "grid" },
columns: grid.Columns(
grid.Column("OrderDate", "Order Date", format: @<text>@((item.OrderDate != null) && (item.OrderDate.ToString("MM/dd/yyyy") != "01/01/0001") ? item.OrderDate.ToString("MM/dd/yyyy") : "")</text>),
grid.Column("OrderNumber", "Order Number"),
grid.Column("Field1, "Field 1"),
grid.Column("Field2", "Field 2"),
grid.Column("Person", "Person"),
grid.Column("Product", "Product"),
grid.Column(format: (item) => Html.ActionLink("View", "Details", new { id = item.orderNumber }))
)
);
}
क्या आपको इसके लिए समाधान मिला? – RredCat
ध्यान रखें कि एएसपीएनटी एमवीसी चेकबॉक्स के लिए अतिरिक्त छिपे हुए इनपुट तत्व बनाएगा और वेबग्रिड इन 2 तत्वों को दोबारा परिभाषित करने के लिए प्रतीत होता है यदि एक तत्व में 2 मानों के साथ क्वेरीस्ट्रिंग में मौजूद है, जो मॉडल के मामले में रेजर में पार्सिंग समस्याएं पैदा कर सकता है चेकबॉक्स के माध्यम से एक चेकबॉक्स के लिए बाध्य। मुझे क्लाइंट साइड पर इन छिपे हुए फ़ील्ड को हटाने के लिए jQuery का उपयोग करना पड़ा। –