我jqGrid的客戶端應用程序發送此:在jqgrid中過濾時可以發送字段類型嗎?
{ "groupOp":"AND", "rules":[{"field":"customernumber", "op":"ge", "data":"200"}]}
是有可能使jqGrid的發送,即使字段類型某物像
{ 「groupOp」: 「和」, 「規則」:[{ 「field」:「customernumber」,「type」:「int」:,「op」:「ge」,「data」:「200」}]}
我jqGrid的客戶端應用程序發送此:在jqgrid中過濾時可以發送字段類型嗎?
{ "groupOp":"AND", "rules":[{"field":"customernumber", "op":"ge", "data":"200"}]}
是有可能使jqGrid的發送,即使字段類型某物像
{ 「groupOp」: 「和」, 「規則」:[{ 「field」:「customernumber」,「type」:「int」:,「op」:「ge」,「data」:「200」}]}
我很久以前就有同樣的需求,我通過傳遞「知識」服務器端來克服它。
問題: 的jqGrid不支持你所需要的,它並不關心字段的類型,它有一定道理的方式,執行本會引起你的其他問題。 實現您自己的序列化機制看起來過於複雜,可能會給您在控件的未來更新上帶來一些問題。 對我來說,這個解決方案在各個地方都可以使用,因爲我的應用程序通常有很多搜索啓用的網格,我不想覆蓋任何默認網格的功能以避免未來控制更新出現問題。
我的解決方案: jqGrid爲您提供的是列名稱,篩選器值和操作。 服務器端你可以通過它的列名獲得列的類型,所以你實際上不需要這些信息在線中傳播。 把這些知識放在服務或控制器上,或者你打電話來執行請求的地方,一切都應該沒問題。
便箋: 在我的情況下,我使用.net實體框架,以便從ORM對象屬性類型中獲取列類型。
乾杯! Alex
首先您需要的功能isn在jqGrid中不存在。此外問題是,jqGrid沒有關於列數據的類型信息,您可以直接使用。 jqGrid只有像sorttype這樣的設置只用於本地排序或者formatter和edittype。另外還有stype,它可以是「文本」或「選擇」。所以這個列沒有數據類型。在我看來,擁有新的datatype
屬性是未來jqGrid版本的一個有趣功能。
現在談談現實。如果您知道列設置中的哪些數據類型是您的案例中的數據類型(sorttype
,formatter
或edittype
),則可以使用所需信息從的filter
參數擴展信息。爲了實現這個,你可以使用serializeGridData爲例。在serializeGridData事件句柄的內部,您可以檢查filter參數。如果存在,則可以將其轉換爲對象,其生成的濾鏡對象可以通過rules
陣列中的附加屬性type
輕鬆擴展。爲此,您可以將rules
陣列的項目的field
財產與colModel
的edittype
(或sorttype
,formatter
)財產匹配。順便說一句,你可以很容易地從$("list").jqGrid('getGridParam','colModel')
從網格獲得參考colModel
。在修改filter
對象後,您可以使用來自json2.js的JSON.stringify函數將其轉換回JSON並將其放置到postData
並將其發送到服務器。
我上面解釋的只是一個粗略的模式,但它可以相對容易地實現。