Технические вопросы
5.x

Открыть файл по двойному клику в реестре

Как реализовать сабж? Понятно, что надо на событие двойного клика грида вешаться.....
А дальше..... Хочется как то попроще.....

Нравится

1 комментарий

Вот пример (из конфигурации). В принципе - ничего сложного, но если появятся вопросы - задавайте, постараюсь ответить:

[csharp]
var selectedNodes = Page.TreeGrid.SelectedNodes;
if (selectedNodes.Count < 1) {
return true;
}
Page.DataSource.LoadRow(new Guid(selectedNodes[0].Values["Id"].ToString()));
if (Page.DataSource.Rows.Count < 1) {
return true;
}
var id = new Guid(selectedNodes[0].Values["Id"].ToString());

var entitySchemaManager = UserConnection.EntitySchemaManager;
var entitySchema = entitySchemaManager.GetInstanceByName("CommentaryFile");
var entitySchemaQuery = new EntitySchemaQuery(entitySchemaManager, entitySchema.Name);
var dataColumn = entitySchemaQuery.AddColumn("Data");
var nameColumn = entitySchemaQuery.AddColumn("Name");
entitySchemaQuery.Filters.Add(entitySchemaQuery.CreateFilterWithParameters(
FilterComparisonType.Equal, entitySchema.GetPrimaryColumnName(), id));
var entityCollection = entitySchemaQuery.GetEntityCollection(UserConnection);
if (entityCollection.Count == 1) {
var data = entityCollection[0].GetColumnValue(dataColumn.Name) as byte[];
var Response = Page.Response;
String fileName = (String)entityCollection[0].GetColumnValue(nameColumn.Name);
Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlPathEncode(fileName));
Response.ContentType = "APPLICATION/OCTET-STREAM";
Response.AddHeader("Content-Length", data.Length.ToString());
Response.BinaryWrite(data);
}
[/csharp]

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