0
私はJQgridをExcelのようなExcelのような機能を実装しました。ここでは、検索ツールバーのドロップダウンリストがあります。私は動的なドロップダウンリストを作成する際に使用した重複したコードを削除する助けが必要です。以下に示す コード:上記のコードでの言及としてjqueryを使ってジェネリックメソッドを作成する方法
// Start ---- Dropdown filter Implementation //
beforeProcessing: function (data) {
var sourceLocaleMap = {}, sourceLocaleValues = ":All", rows = data.rows, i, sourceLocale, sourceLocaleName;
for (i = 0; i < rows.length; i++) {
sourceLocale = rows[i].SourceLocaleId;
sourceLocaleName = rows[i].SourceLocaleName;
if (!sourceLocaleMap.hasOwnProperty(sourceLocale)) {
sourceLocaleMap[sourceLocale] = 1;
sourceLocaleValues += ";" + sourceLocale + ":" + sourceLocaleName;
}
}
$(this).jqGrid("setColProp", 'SourceLocaleId', {
stype: "select",
searchoptions: {
value: sourceLocaleValues.substring(5),
sopt: ["eq", "ne"],
clearSearch: false,
attr: { multiple: 'multiple', size: 29 },
dataInit: dataInitMultiselect
}
})
var CompanyMap = {}, CompanyValues = ":All", rows = data.rows, i, Company, CompanyName;
for (i = 0; i < rows.length; i++) {
Company = rows[i].CompanyId;
CompanyName = rows[i].CompanyName;
if (!CompanyMap.hasOwnProperty(Company)) {
CompanyMap[Company] = 1;
CompanyValues += ";" + Company + ":" + CompanyName;
}
}
$(this).jqGrid("setColProp", 'CompanyId', {
stype: "select",
searchoptions: {
value: CompanyValues.substring(5),
sopt: ["eq", "ne"],
clearSearch: false,
attr: { multiple: 'multiple', size: 2 },
dataInit: dataInitMultiselect
}
})
var CurrencyMap = {}, CurrencyValues = ":All", rows = data.rows, i, Currency, CurrencyName;
for (i = 0; i < rows.length; i++) {
Currency = rows[i].CurrencyId;
CurrencyName = rows[i].CurrencyName;
if (!CurrencyMap.hasOwnProperty(Currency)) {
CurrencyMap[Currency] = 1;
CurrencyValues += ";" + Currency + ":" + CurrencyName;
}
}
$(this).jqGrid("setColProp", 'CurrencyId', {
stype: "select",
searchoptions: {
value: CurrencyValues.substring(5),
sopt: ["eq", "ne"],
clearSearch: false,
attr: { multiple: 'multiple', size: 17 },
dataInit: dataInitMultiselect
}
})
var LocaleMap = {}, LocaleValues = ":All", rows = data.rows, i, Locale, LocaleName;
for (i = 0; i < rows.length; i++) {
Locale = rows[i].LocaleId;
LocaleName = rows[i].LocaleName;
if (!LocaleMap.hasOwnProperty(Locale)) {
LocaleMap[Locale] = 1;
LocaleValues += ";" + Locale + ":" + LocaleName;
}
}
$(this).jqGrid("setColProp", 'LocaleId', {
stype: "select",
searchoptions: {
value: LocaleValues.substring(5),
sopt: ["eq", "ne"],
clearSearch: false,
attr: { multiple: 'multiple', size: 2 },
dataInit: dataInitMultiselect
}
}).jqGrid('destroyFilterToolbar')
.jqGrid('filterToolbar', {
stringResult: true,
searchOnEnter: false,
defaultSearch: "cn"
});
},
// End ---- Dropdown filter Implementation //
、私は1つの関数の代わりに、重複したコードをしたいです。ここで私は異なるパラメータを持つ4種類のIDを持っています。私は1つの関数を私はパラメータを渡すことができます&は、このパラメータの値に依存する設定されます。どうすればこのコードを実装することができますか&コードから冗長なデータを減らしてください。前もって感謝します。