Страница 1 из 1

Глюк при программном добавлении переменных в отчёт

Добавлено: 27 дек 2010, 12:10
AlexFree
Глюк при программном добавлении переменных в отчёт.

При передаче переменных в отчёт и назначении им категорий, категории и переменные не отображаются в словаре (flash-дизайнер). Но если сохранить этот отчёт на диске и открыть его windows-дизайнером всё отображается как нужно.
Если это не глюк, то как правильно назначать категории.

Код для примерно такой:

Код: Выделить всё

protected void Page_Load(object sender, EventArgs e)
{
    StiReport r = new StiReport();
    if (!IsPostBack)
    {
        if (TokenReport == null)
            return;
        if (TokenReport.Report.ID != Guid.Empty)
            r.Load(GetReport());
        int counter = 0;
        r.Dictionary.Variables.Clear();
        foreach (AB.Step s in TokenReport.Template.Steps)
        {
            foreach (AB.Control c in s.Controls)
            {
                Page p = new Page();
                Control loadedControl = p.LoadControl(c.Path);
                Hashtable ht = (Hashtable)loadedControl.GetType().GetMethod("GetFieldData").Invoke(loadedControl, new object[] { });
                IDictionaryEnumerator de = ht.GetEnumerator();

                while (de.MoveNext())
                {
                    StiVariable v = new StiVariable();
                    v.Type = typeof(String);
                    v.Description = "Описание";
                    v.Alias = "Алиас";
                    v.ReadOnly = false;

                   string category = "Шаг " + (s.Number).ToString();
                   v.Category = category;
                        
                    if (de.Key.ToString()[0] == '_')
                        v.Name = c.ControlID + de.Key.ToString();
                    else
                        v.Name = de.Key.ToString();

                    r.Dictionary.Variables.Add(v);
                }                    
            }                
        }
        try 
        {
            StiWebDesigner1.Design(r); 
        }
        catch (Exception ex)
        {
        }            
    }
}


Глюк при программном добавлении переменных в отчёт

Добавлено: 28 дек 2010, 04:09
Vladimir
Здравствуйте,

Это происходит из-за того, что переменная добавляется в несуществующую группу (категорию). Для этого нужно в начале создать группу и добавить её, а потом создавать и добавлять переменные:

Код: Выделить всё

StiVariable category = new StiVariable("CategoryName");
report.Dictionary.Variables.Add(category);
Мы исправили эту ошибку, теперь несуществующие группы будут создаваться автоматически. Обновление будет доступно в пререлиз билде 28 декабря.

Спасибо.