3

我正在 Telerik 报告中动态创建表格的列。这是代码:

            //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});
        }

这样做的问题是列宽是固定的。如果我尝试使用 textbox.Dock = DockStyle.Fill; 我得到一个对象引用错误。有没有办法根据内容自动调整列宽?

4

1 回答 1

0
 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));
            }
于 2015-10-09T02:57:02.180 回答