ASP.NET MVC JQGRIDドロップダウンの「未定義の」値の解決
データ編集中にJQGridドロップダウンを動的に登録すると、望ましくない「未定義の」値が頻繁に表示されます。これは、JQGridが期待するデータ構造とデータ提供方法との間の矛盾に起因します。
正しいjqgridデータ形式:
ドロップダウンの値の理想的な形式は次のとおりです。
現在の方法の問題:
現在のアプローチでは、jqueryの $。ajax()
を使用してasp.net mvcを使用してドロップダウンデータを取得します。 a stringbuilder は、取得したデータをjqgridの形式に一致させるように操作しますが、追加の「未定義」のエントリは持続します。
デバッグ調査結果:
firebugのデバッグは、 sb.tostring()
によって導入された追加の引用符が原因であることを示しています。 JQGridは独自の引用を追加し、2倍になった引用と「未定義」の問題につながります。
優れたソリューション:
および buildSelect
を使用してください。
プロパティを直接操作する代わりに、より堅牢なソリューションは、jqgridの dataurl
および buildselect
プロパティを使用することを伴います。 これらにより、カスタマイズされたデータの取得とフォーマットが可能になります。
例
dataurl action:
public jsonresult getDestinitionList(){
リスト alldestinations = getalldestinations();
return json(alldestinations、jsonrequestbehavior.allowget);
}
public JsonResult GetDestinationList() {
List allDestinations = GetAllDestinations();
return Json(allDestinations, JsonRequestBehavior.AllowGet);
}
buildselect:function(data){
var s = '';
if(data && data.length){
for(var i = 0、l = data.length; i
buildSelect: function(data) {
var s = '';
if (data && data.length) {
for (var i = 0, l = data.length; i
{
名前:「目的地」、
編集可能:本当、
edittype: 'select'、
編集:{
dataurl: '/yourcontroller/getDestinitionList'、//コントローラーアクションパスに置き換えます
BuildSelect:function(data){
// ...(上からbuildSelect関数)...
}
}
}
{
name: 'destinations',
editable: true,
edittype: 'select',
editoptions: {
dataUrl: '/YourController/GetDestinationList', // Replace with your controller action path
buildSelect: function(data) {
// ... (buildSelect function from above) ...
}
}
}
json(alldestinations); なしで jsonrequestbehavior.allowget
を使用できますが、 newer jqgridバージョンでは、
buildselect は
$
この改訂されたアプローチは、JQGridドロップダウンを管理するためのよりクリーンで効率的で、エラーが発生しない方法を提供し、「未定義の」価値の問題を排除します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3