Работа с файлами.

Все таки вопрос остался открытым, несмотря на полученную консультацию техподдержки.

Все таки "поле загрузки файла" -- это не то что нужно мне в данной ситуации.
Файлы попадают в общую таблицу File с сохранением связи в таблице MyObjectFile.

Так не надо, надо файлы хранить в той же таблице MyObject.....

Так что вопрос остается открытым: как это сделать? Как вообще дать возможность пользователю работать с файлами в системе без использования детали Файлы?

Нравится

3 комментария

Здравствуйте, Александр!

Дублирую инструкцию:

Откройте страницу редактирования контакта (ContactEditPage). Добавьте на страницу контейнер с изображением и поле загрузки файла:

Назовите их PhotoImageBox и PhotoFileUploadEdit. Для поля загрузки файла создайте обработчик события:

В скрипте обработчика события должен быть следующий программный код:

var tableESQ =  UserConnection.EntitySchemaManager.GetInstanceByName("Contact");
var entity = tableESQ.CreateEntity(UserConnection);
var contactId = Page.DataSource.ActiveRow.GetTypedColumnValue<Guid>("Id");
if(contactId == Guid.Empty || (!IsEdit && !CopyCreated)){
	Page.ThrowEvent("SaveContactNeeded");
	return true;
}
if (entity.FetchFromDB(contactId)) {
	if(Page.PhotoFileUploadEdit.FileBytes.Length==0)
	entity.SetStreamValue("Photo", new MemoryStream(Page.PhotoFileUploadEdit.FileBytes));
	if((!IsNew || contactId != Guid.Empty))	{
		entity.Save();
	}
}
return true;

Добавьте обработчик события SaveContactNeeded со следующим содержимым:

Page.AddScript(string.Format("if (Ext.FormValidator.validate()) {0}.save();", Page.DataSource.ClientID));

Опубликуйте страницу.

"Шамуилов Александр" написал:Как вообще дать возможность пользователю работать с файлами в системе без использования детали Файлы

Если у вас OnSite мб, стоит посмотреть в строну FileStream (http://www.community.terrasoft.ua/forum/topic/7454)

Александр, "Поле загрузки файла" - всего лишь инструмент для получения содержимого файла.
На сколько я помню класс FileStream - небезопасный (об этом трубят даже в Мелкософте).
Если повесить обработчик Change для элемента управления то пользователь случайно выбрав файл, изменив тем самым значение элемента управления, вызовет обработчик PhotoFileUploadEditChange. Была бы моя воля, я бы добавил какую-нить кнопку, по клику на который обрабатывать события.
ИМHO.

Показать все комментарии