2011-08-22 89 views
3

jqGrid使用下面的colmodel在列中顯示圖像。圖像以二進制列存儲在數據庫中。 如何讓用戶上傳圖片到現有的和新的行?如何將圖像上傳到jqgrid列

colModel: [{"name":"ProductId","edittype":"custom","editoptions":{"custom_element":function(value, options) { return combobox_element(value, options)} 
,"custom_value":combobox_value 
},"editable":true,"width":112,"fixed":true,"hidden":false}, 

{"name":"Image","formatter":function(cell, options,row) { 
          return "<img src='Grid/GetImage?image=" + row[0] + "'/>" 
} 
}] 

public FileContentResult GetImage(string image) { 
    byte[] image = .... 
    return File(image, "image/jpg"); 
} 
+0

@Oleg你能回答這個問題嗎? – Tareq

+0

@Tareq:我使用DataProxy取得了一些進展。在其他問題中,我還將測試用例發送給包含這個的Oleg。未解決的isses是:圖像不立即刷新,如果http響應返回錯誤,則不能讀取錯誤消息,不支持內聯編輯。 – Andrus

回答

0

問題是jqGrid的使用AJAX和圖片上傳需要一個文件對話框,然後文件對話框不超過阿賈克斯工作。

我通過不做內聯編輯(就像在其他網格上完成的那樣)來解決此問題,但當用戶單擊內聯編輯按鈕時,我重定向到了另一頁上的窗體。編輯的一種形式和添加的另一種形式。這些表單具有文件對話框,以及用於編輯/添加行的其他表單元素。提交表單後,用戶將重定向回網格。

在大多數網格中,我使用格式化程序:'actions'以及navgrid。但對於圖像的網格它沒有這樣的:

對於navgrid,我使用下面的代碼:

jQuery("#grid1").jqGrid('navGrid', '#pager1', 
      { search: false, editfunc: goEdit, addfunc: goAdd }, //options 

它調用函數goEdit()等,這些看起來像這樣:

function goEdit(rowid) { 
     window.location = "/controllerName/EditFormName/" + rowid; 
    } 

此列取代了通常的格式化列:'actions'柱:

{ name: 'RowActions', width: 60, fixed: true, sortable: false, resize: false, formatter: formatCustomED }, 

formatCustomED函數使內聯編輯圖像,並使它們重定向:

formatCustomED = function (el, cellval, opts) { 
     return "<div style=\"float: left; cursor: pointer;padding-left:8px\" class=\"ui-pg-div ui-inline-edit\" onmouseover=\"jQuery(this).addClass('ui-state-hover');\" title=\"Edit selected row\" onmouseout=\"jQuery(this).removeClass('ui-state-hover')\" onclick='goEdit(" + opts[0] + ")'><span class=\"ui-icon ui-icon-pencil\"></span></div><div style=\"margin-left: 5px; float: left;\" class=\"ui-pg-div ui-inline-del\" onmouseover=\"jQuery(this).addClass('ui-state-hover');\" title=\"Delete selected row\" onmouseout=\"jQuery(this).removeClass('ui-state-hover');\" onclick=\"doDelete("+opts[0]+")\"><span class=\"ui-icon ui-icon-trash\"></span></div>"; 
    }