Добрый день, уважаемые гуру BPM!
Возникло затруднение - на Label в некотором окне нужно вывести заранее сформированный текст типа списка, само собой определенным образом разбитый на строчки. Подскажите, как бы это сделать?
Попытка добавить "\r\n" не помогла;
System.Environment.NewLine не помогает;
"\n" не помогает.
Как вариант буду рад совету как реализовать перенос строк в MemoEdit...
Нравится
Здравствуйте.
К сожалению свойства WordWrap для UI элемента Label не предусмотрено, в результате поместить многострочный текст в этот компонент невозможно.
Для MemoEdit же, если для компонента установлено свойство WordWrap, служебные символы перевода строки работают:
Page.MemoEdit1.Value = "this \r\n is \r\n multiline \r\n text. ";
С лэйблом грустно... :sad:
Пробую MemoEdit.
Поле помещаю в окно, окно поднимаю с помощью действия процесса "Открыть страницу".
Назначаем параметры перед вызовом окна:
var MessageText = "this \r\n is \r\n multiline \r\n text. "; UserTask1.PageUId = new Guid("{c527453b-2c64-40dc-bd4d-48b43be79c54}"); var TaskPageParameters = new Dictionary<string,string>(); TaskPageParameters.Add("MessageText", MessageText); UserTask1.PageParameters = TaskPageParameters;
На окне в PageLoadComplete для MemoEdit.Value назначаю значение параметра
string queryString = Page.Request.QueryString.ToString(); if (queryString.Contains("MessageText")) { Page.MessageEdit.Value = Page.Request.QueryString["MessageText"].ToString(); }
С таким текстом в MessageText окно не поднимается вообще... понятно почему - не проходит в QueryString символы \r\n
Соответственно переформулируем проблему - можно ли как то для поднимаемого действием окна все это передать другим способом?
Дежурный вариант - вместо разрывов строк ставить символы и уже на окне парсить и разбивать на строки, помещать в мемо. Может быть есть метод поизящнее?
Александр, а если попробовать так?
var MessageText = @"this \r\n is \r\n multiline \r\n text. ";
Александр, попробуйте
HttpUtility.UrlEncode(MessageText)
"Олейник Дмитрий" написал:Александр, а если попробовать так?
var MessageText = @"this \r\n is \r\n multiline \r\n text. ";
Получилось, спасибо!
"Раловец Ольга" написал:Александр, попробуйте
HttpUtility.UrlEncode(MessageText)
Выдает "The name HttpUtility doesnt exist in the current context"
Чтобы два раза не вставать:smile: спрошу в этой же теме у гуру BPM
Есть строка со списком Id (разделенных точкой с запятой, например)
string selectedIds = "deb710e4-f36b-1410-e886-00155d010cbf;7eb620fa-f36b-1410-ea86-00155d010cbf";
Нужно в запрос вида
var SomeSelect = new Select(Page.UserConnection) .Column("SomeTable", "SomeField") .From("SomeTable") .Where("SomeTable", "Id").IsEqual(Column.Parameter(selectedIdsParameter)) as Select;
подставить этот набор значений Id в selectedIdsParameter... туда же не просто строка selectedIds должна передаваться? И уместен ли здесь IsEqual?
"Александр Кудряшов" написал:Выдает "The name HttpUtility doesnt exist in the current context"
using System.Web.
Это еще может пригодиться особенно, если захотите в QueryString какой-то ReturnUrl поместить.
"Александр Кудряшов" написал:Нужно в запрос вида
var SomeSelect = new Select(Page.UserConnection)
.Column("SomeTable", "SomeField")
.From("SomeTable")
.Where("SomeTable", "Id").IsEqual(Column.Parameter(selectedIdsParameter))
as Select;
подставить этот набор значений Id в selectedIdsParameter... туда же не просто строка selectedIds должна передаваться? И уместен ли здесь IsEqual?
вместо IsEqual подойдет In(), в который можно передавать массив Column.Parameter
.Where("SomeTable", "Id").In(Column.Parameter(selectedIds))
такой вариант не вызывает ругательств при компиляции, но фильтруется только по первому Id из списка (как будто IsEqual)
Вы в In передали один экземпляр Column.Parameter, в который передали массив значений, а нужно в In передать массив Column.Parameter, в каждый из которых передать по одному значению из selectedIds
Сломал мозг, пытаясь передать массив из Column.Parameter:cry:
QueryColumnExpression[] ArrayParam = new QueryColumnExpression[selectedNodes.Count]; for(int i = 0; i< selectedNodes.Count; i++){ ArrayParam[ i ] = Column.Parameter(selectedNodes[i].Values["Id"].ToString()); }
[update] заработало! Именно таким образом, ошибка была у меня в другом куске кода. В фильтр In успешно передается массив параметров.
Для In нашла только один пример, через константы.
var select = new Select(userConnection) .Column("Name") .From("Country") .Where("Name").In(Column.Const("TestValue1"), Column.Const("TestValue2"));
может не в тему, можно как-то вставить подзапрос в колонку, вернее как подзапрос вставить понятно, а вот как использовать колонку основного запроса в виде параметра непонятно
Select headContactSelect = new Select(UserConnection) .Column("DivisionGroups", "Id") .Column(new Select(UserConnection).Top(1) .Column("AUC", "ContactId") .From("SysUserInRole").As("UIR") .InnerJoin("SysAdminUnit").As("AUC") .On("AUC", "Id").IsEqual("UIR", "SysUserId") .Where("UIR", "SysRoleId").IsEqual('<<Column>>')) .As("HeadContactId") .From(hDivisionsExpression).As("DivisionGroups") .Where("DivisionGroups", "SysAdminUnitTypeValue").IsEqual(Column.Parameter(2)) .And("DivisionGroups", "Level").IsEqual(Column.Parameter(2)) as Select;
Хочу вместо этого '<>' использовать Column("DivisionGroups", "Id")?
Александр, посмотрите здесь, может найдете решение Вашей задачи.