Используя ExtJS 4.2.3, у меня есть FORM со списком вложений. Когда я нажимаю на одно из вложений, оно начинает загружаться. Вместо загрузки мне нужно получить диалог с возможностью открывать или сохранять файл по клику.
Пример кода:
<script type="text/javascript" language="javascript">
Ext.onReady(function () {
var trGuid = Ext.Object.fromQueryString(location.search).trGUID;
Ext.define("File_model", {
extend: "Ext.data.Model",
fields: [
{ name: 'document_GUID', type: 'string' },
{ name: 'attachment_fileName', type: 'string' },
]
}); // end Model
Ext.create('Ext.data.Store', {
storeId: 'FileStore',
model: "File_model",
proxy: {
type: 'jsonp',
url: 'http://test/AttachmenttoHTML/List',
extraParams: { trGUID: trGuid },
reader: {
type: 'json',
root: 'data'
}
},
autoLoad: true
}); // end Store
FileGrid = new Ext.grid.Panel({
renderTo: "EXT-CONTENT",
width: 750,
height: 500,
listeners: {
cellclick: function (table, td, cellIndex, record, tr, rowIndex, e) {
var url = 'http://test/Attachment/Get?document_GUID=' + record.get("document_GUID");
console.log(url);
window.location = url;
}
},
columns: {
defaults: { filter: true },
items: [
{ text: 'Name', dataIndex: 'attachment_fileName', width: 748, cellWrap: true }
]
},
store: Ext.data.StoreManager.lookup('FileStore')
}); // end TaskGrid
}); // end onReady
</script>
В вашей функции cellclick вам нужно вызвать такую функцию:
function openDialogue(url) {
Ext.MessageBox.show({
title:'Export',
msg: 'Souhaitez vous télécharger le document?',
buttons: Ext.MessageBox.YESNOCANCEL,
fn: showResult,
animateTarget: 'mb4',
icon: Ext.MessageBox.QUESTION
});
}
Вы можете найти более подробное сообщение об ошибке (http://docs.sencha.com/extjs/4.0.7/#!/example/message-box/msg-box.html).
Функция showResult перенаправит URL-адрес, как вы это делали раньше.
В противном случае вы можете использовать window.open для сохранения диалога.
Надеюсь, поможет !