3 Stimmen

telerik reporting: Variable Spaltenbreite in programmatisch erstellter Tabelle

Ich bin dynamisch die Spalten einer Tabelle in einem telerik Bericht erstellen. Dies ist der Code:

            //create two HtmlTextBox items (one for header and one for data) which would be added to the items collection of the table
        Telerik.Reporting.HtmlTextBox textboxGroup;
        Telerik.Reporting.HtmlTextBox textBoxTable;

        //we do not clear the Rows collection, since we have a details row group and need to create columns only
        this.table1.ColumnGroups.Clear();
        this.table1.Body.Columns.Clear();
        this.table1.Body.Rows.Clear();
        int i = 0;
        this.table1.ColumnHeadersPrintOnEveryPage = true;
        var attributes = _objectInstances.First().ObjectType.Attributes;
        foreach (var attribute in attributes)
        {
            if (string.IsNullOrWhiteSpace(attribute.ColumnName) || !_objectInstances.First().Dictionary.ContainsKey(attribute.ColumnName)) continue;

            var tableGroupColumn = new Telerik.Reporting.TableGroup();
            this.table1.ColumnGroups.Add(tableGroupColumn);
            this.table1.Body.Columns.Add(new Telerik.Reporting.TableBodyColumn(Unit.Inch(1)));

            textboxGroup = new Telerik.Reporting.HtmlTextBox();
            textboxGroup.Style.BorderColor.Default = Color.Black;
            textboxGroup.Style.BorderStyle.Default = BorderType.Solid;
            textboxGroup.Value = attribute.ColumnName;
            textboxGroup.Size = new SizeU(Unit.Inch(1.1), Unit.Inch(0.3));
            tableGroupColumn.ReportItem = textboxGroup;

            textBoxTable = new Telerik.Reporting.HtmlTextBox();
            textBoxTable.Style.BorderColor.Default = Color.Black;
            textBoxTable.Style.BorderStyle.Default = BorderType.Solid;
            textBoxTable.Value = "=Fields." + attribute.ColumnName;
            textBoxTable.Size = new SizeU(Unit.Inch(1.1), Unit.Inch(0.3));
            this.table1.Body.SetCellContent(0, i++, textBoxTable);
            this.table1.Items.AddRange(new ReportItemBase[] {textBoxTable, textboxGroup});
        }

Das Problem dabei ist, dass die Spaltenbreite festgelegt ist. Wenn ich versuche, textbox.Dock = DockStyle.Fill zu verwenden; zu verwenden, erhalte ich einen Objektreferenzfehler. Gibt es eine Möglichkeit, die Spaltenbreite automatisch an den Inhalt anzupassen?

0voto

 if (dt.Columns[i].ColumnName == "Employee Number")
            {
                textBoxTable.Size = new SizeU(Unit.Inch(.5), Unit.Inch(0.3));
            }
            if (dt.Columns[i].ColumnName == "Employee Name")
            {
                textboxGroup.Size = new SizeU(Unit.Inch(2.1), Unit.Inch(0.3));
            }
            else
            {
                textBoxTable.Size = new SizeU(Unit.Inch(.90), Unit.Inch(0.3));
            }
            if (dt.Columns[i].ColumnName.ToLower().Contains("share"))
            {
                textBoxTable.Style.Color = Color.Chocolate;
                textboxGroup.Size = new SizeU(Unit.Inch(0.9), Unit.Inch(0.3));
            }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X