I have a scenario where I have to programmatically create Tables in a RichTextbox editor. The tables are created but I want to insert data into these tables. is there some way to programmatically get to blank tables inside a document and add data into its cells.
could you please share the code for the same?
Thanks in Advance,
Ramana
3 Answers, 1 is accepted
Thank you for contacting us.
The best choice in your case would be to save the Table's reference when creating it in a List<Table> or array. This way you can access them at any time. You can then easily insert TableCells in them. Below is a sample method:
private
Table CreateTable(RadRichTextBox richTextBoxToModify)
{
Section section =
new
Section();
Table table =
new
Table(1, 1);
section.Blocks.Add(table);
richTextBoxToModify.Document.Sections.Add(section);
return
table;
}
I also recommend you to read about the Element Hierarchy in RadRichTextBox.
If you have any other questions, do not hesitate to ask.
Regards,
George
Telerik
Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
Sign up for Free application insights >>
I had a similar issue and after looking around for a while I decided to set up a method that I could use to loop through my "dataset" as needed to insert rows to a newly created table (in this case it is the only table in the doc, but I have another solution using the same method - just with a list of Tables with a reference Id). Since you can create a table without knowing the number of rows/columns that will be needed it is even easier to then add each row with the number of cells you need.
Not sure whether this is the best method - but it is working great for me and goes through the data fairly quickly :)
Below is a sample of what I am doing with a collection of work items retrieved from a TFS Server (I have removed the logic of pulling the fields I need from each item in the List, which, unfortunately, does not Implement IEnumerable so I cannot do a foreach).
for
(
int
i = 0; i < numRows - 1; i++)
{
table.Rows.Add(AddNewRow(
new
string
[] { string1,string2,string3}));
}
The method for creating a new row takes an array of strings for each column/cell - I am also taking advantage of this time to do some formatting which is specific to my scenario
private
TableRow AddNewRow(
string
[] items)
{
TableRow newRow =
new
TableRow();
for
(
int
i = 0; i < items.Length; i++)
{
TableCell cell =
new
TableCell();
Paragraph paragraph =
new
Paragraph();
Span span =
new
Span();
var newString = items[i];
if
(
string
.IsNullOrEmpty(items[i]))
newString =
" ? "
;
if
(i == 1)
{
int
status = 0;
int
.TryParse(newString,
out
status);
if
(status > 0)
{
Color bgColor = Color.White;
switch
(status)
{
case
1:
bgColor = Color.Green;
break
;
case
2:
bgColor = Color.Yellow;
break
;
case
3:
bgColor = Color.Red;
break
;
}
cell.Background = bgColor;
span.ForeColor = bgColor;
}
}
span.Text = newString;
paragraph.Inlines.Add(span);
cell.Blocks.Add(paragraph);
newRow.Cells.Add(cell);
}
return
newRow;
}
Thank you for sharing your solution with the community. I have updated your Telerik Points for your time and effort.
Regards,
George
Telerik
Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
Sign up for Free application insights >>