使用jqGrid動態填入下拉式選單進行資料編輯時,下拉式選單中會出現額外的「undefined」項目。此問題源自於用於填入下拉式選單值的字串格式。
jqGrid要求下拉選單值格式如下:
<code>value: "FE:FedEx; IN:InTime; TN:TNT"</code>
但是,ASP.NET MVC操作中的程式碼使用sb.ToString()產生字串,這會在值周圍添加不必要的引號:
<code>value: ""ID: One;ID: Two;ID: Three;ID: Four;ID: Five;""</code>
方法一:使用dataUrl
為了解決這個問題,建議使用jqGrid中editoptions或searchoptions的dataUrl屬性。這允許您指定傳回所需格式結果的URL:
<code>{ name: 'destinations', ditable: true, edittype:'select', editoptions: { dataUrl:'<%= Url.Action("GetDestinationList","Home") %>' } }</code>
在控制器中,GetDestinationList操作應傳回包含下拉式選單值的JSON陣列:
<code>public JsonResult GetDestinationList() { List<string> allDestinations = GetAllDestinations(); Json(allDestinations, JsonRequestBehavior.AllowGet); }</code>
方法二:使用buildSelect函數
如果無法使用dataUrl,可以使用buildSelect函數來格式化下拉式選單值:
<code class="language-javascript"> buildSelect: function(data) { var s = ''; if (response && response.length) { for (var i = 0, l=response.length; i<l ; i++) { var ri = response[i]; s += ''+ri+''; } } return s + ""; }</code>
此函數接收來自伺服器的回應數據,並傳回所需格式的字串。
以上是為什麼我的 ASP.NET MVC $.post 請求傳回 jqGrid 下拉清單的意外格式化字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!