Hi,
We are getting an exception when trying to set the CaretPosition in a RadDocument.
The Document is created in code:
public void PurchaseTemplate()
{
try
{
RadDocumentEditor editor = new RadDocumentEditor(doc_text.Document);
string[] rowName = new string[] { "Make", "Model", "Technical Spec.", "Order No.", "Date Ordered", "Date Delivered", "Price", "Payment Method", "Supplier", "Tel.", "Other Details", "Manufacturer", "Tel.", "Other Details", "Guarantee", "Period", "Expiry Date", "Notes" };
TableWidthUnit w1 = new TableWidthUnit(180); // Date
TableWidthUnit w2 = new TableWidthUnit(500); // Day
TableCell cell1 = new TableCell();
TableCell cell2 = new TableCell();
TableRow row = new TableRow();
Paragraph p1 = new Paragraph();
Span s1 = new Span();
string subject = " ";
if (_selelement != null)
{
subject = _selelement.GetAttribute("title");
}
Table table = new Table();
table.StyleName = RadDocumentDefaultStyles.DefaultTableGridStyleName;
table.Tag = "5000";
table.Rows.ElementAdded += doc_text_DiaryChanged;
cell1.Background = Color.FromRgb(242, 219, 219);
cell1.PreferredWidth = w1;
cell1.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
s1.FontWeight = FontWeights.Bold;
s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
s1.Text = "Item";
p1.Inlines.Add(s1);
cell1.Blocks.Add(p1);
p1 = new Paragraph();
s1 = new Span();
cell2.Background = Color.FromRgb(242, 219, 219);
cell2.PreferredWidth = w2;
cell2.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
s1.FontWeight = FontWeights.Bold;
s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
s1.Text = subject;
p1.Inlines.Add(s1);
cell2.Blocks.Add(p1);
row.Cells.Add(cell1);
row.Cells.Add(cell2);
table.Rows.Add(row);
int nRow = 0;
foreach (string name in rowName)
{
row = new TableRow();
cell1 = new TableCell();
cell2 = new TableCell();
switch (nRow)
{
default:
p1 = new Paragraph();
s1 = new Span();
cell1.Background = Color.FromRgb(255, 255, 255);
cell1.PreferredWidth = w1;
cell1.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
s1.FontWeight = FontWeights.Bold;
s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
s1.Text = name;
p1.Inlines.Add(s1);
cell1.Blocks.Add(p1);
p1 = new Paragraph();
s1 = new Span();
cell2.Background = Color.FromRgb(255, 255, 255);
cell2.PreferredWidth = w2;
cell2.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
s1.Text = " ";
p1.Inlines.Add(s1);
cell2.Blocks.Add(p1);
row.Cells.Add(cell1);
row.Cells.Add(cell2);
table.Rows.Add(row);
break;
case 9:
case 10:
case 12:
case 13:
case 15:
case 16:
DocumentList bullets = new DocumentList(DefaultListStyles.Bulleted, doc_text.Document);
p1 = new Paragraph();
s1 = new Span();
cell1.Background = Color.FromRgb(255, 255, 255);
cell1.PreferredWidth = w1;
cell1.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
s1.Text = name;
p1.Inlines.Add(s1);
bullets.AddParagraph(p1);
cell1.Blocks.Add(p1);
p1 = new Paragraph();
s1 = new Span();
cell2.Background = Color.FromRgb(255, 255, 255);
cell2.PreferredWidth = w2;
cell2.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
s1.Text = " ";
p1.Inlines.Add(s1);
cell2.Blocks.Add(p1);
row.Cells.Add(cell1);
row.Cells.Add(cell2);
table.Rows.Add(row);
break;
case 17:
p1 = new Paragraph();
s1 = new Span();
cell1.Background = Color.FromRgb(255, 255, 255);
cell1.PreferredWidth = w1;
cell1.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
cell1.RowSpan = 7;
s1.FontWeight = FontWeights.Bold;
s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
s1.Text = name;
p1.Inlines.Add(s1);
cell1.Blocks.Add(p1);
p1 = new Paragraph();
s1 = new Span();
cell2.Background = Color.FromRgb(255, 255, 255);
cell2.PreferredWidth = w2;
cell2.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
s1.Text = " ";
p1.Inlines.Add(s1);
cell2.Blocks.Add(p1);
row.Cells.Add(cell1);
row.Cells.Add(cell2);
table.Rows.Add(row);
for (int x = 0; x < 6; x++)
{
row = new TableRow();
cell2 = new TableCell();
p1 = new Paragraph();
s1 = new Span();
cell2.Background = Color.FromRgb(255, 255, 255);
cell2.PreferredWidth = w2;
cell2.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
s1.Text = " ";
p1.Inlines.Add(s1);
cell2.Blocks.Add(p1);
row.Cells.Add(cell2);
table.Rows.Add(row);
}
break;
}
nRow++;
}
editor.InsertTable(table);
// Insert a field so we can identify the type of template
//var cell = table.EnumerateChildrenOfType<TableCell>().FirstOrDefault();
var cell = table.EnumerateChildrenOfType<TableCell>().FirstOrDefault();
if (cell != null)
{
DocumentPosition position = new DocumentPosition(doc_text.Document);
position.MoveToDocumentElementStart(cell.Blocks.First());
DocumentVariableField docVariable = new DocumentVariableField() { VariableName = "5000" };
editor.InsertField(docVariable);
}
doc_text.Document.DocumentVariables["5000"] = "";
var field = doc_text.Document.EnumerateChildrenOfType<FieldRangeStart>().Where(x => x.Field.FieldTypeName == "DOCVARIABLE"
&& ((DocumentVariableField)x.Field).VariableName == "5000").FirstOrDefault();
if (field != null)
{
doc_text.UpdateField(field);
}
// Add the Datepickers
var hrow5 = table.EnumerateChildrenOfType<TableRow>().ToList()[5];
var hrow6 = table.EnumerateChildrenOfType<TableRow>().ToList()[6];
var hrow17 = table.EnumerateChildrenOfType<TableRow>().ToList()[17];
AddPurchaseDatePicker(table, hrow5);
AddPurchaseDatePicker(table, hrow6);
AddPurchaseDatePicker(table, hrow17);
}
catch (Exception e)
{
CGlobals cg = new CGlobals();
cg.ShowError("TemplateHandler:PurchaseTemplate Error\n" + e.Message, 3);
}
}
We are then trying to insert a DateProperties into 3 cells in the table created using AddPurchaseDatePicker(Table, TableRow) :
public void AddPurchaseDatePicker(Table table, TableRow row)
{
try
{
RadDocument document = doc_text.Document;
RadDocumentEditor editor = new RadDocumentEditor(document);
var dateCell = row.Cells.ToList()[1];
DocumentPosition position = new DocumentPosition(document);
string dateVal = string.Empty;
var span = dateCell.EnumerateChildrenOfType<Span>().FirstOrDefault();
if (span != null)
{
dateVal = span.Text;
span.Text = " ";
}
position.MoveToDocumentElementStart(dateCell.Blocks.First());
document.CaretPosition.MoveToPosition(position);
editor.ChangeFontFamily(new FontFamily(CGlobals.docu_default_font));
editor.ChangeFontSize(Unit.PointToDip(CGlobals.docu_default_font_size));
DateProperties dataProperties = new DateProperties();
try
{
dataProperties.FullDate = DateTime.Parse(dateVal);
}
catch { }
dataProperties.IsTemporary = false;
dataProperties.StyleName = "TemplateFields";
editor.InsertStructuredDocumentTag(dataProperties);
doc_text.Document = document;
table.Rows.ElementAdded += doc_text_NoteChanged;
}
catch { }
}
When we try and set the CaretPosition with
document.CaretPosition.MoveToPosition(position);
we recieve the following exception:
System.InvalidOperationException
HResult=0x80131509
Message=inline does not belong to this document.
Source=Telerik.Windows.Controls.RichTextBox
StackTrace:
at Telerik.Windows.Documents.Model.RadDocument.GetContainingAnnotationRanges[TRangeStart](Inline inline, Predicate`1 filter, Boolean inclusive)
at Telerik.Windows.Documents.Model.RadDocument.GetContainingAnnotationRanges[TRangeStart](Inline inline, Boolean inclusive)
at Telerik.Windows.Documents.DocumentPosition.get_IsPositionInSkipPositionRange()
at Telerik.Windows.Documents.DocumentPosition.get_IsValidPosition()
at Telerik.Windows.Documents.DocumentPosition.Validator.EnsureValidPosition(DocumentPosition position, Func`1 shouldSearchForward)
at Telerik.Windows.Documents.DocumentPosition.OnPositionChanged()
at Telerik.Windows.Documents.Utils.SuspendChangingAndChangedActionCounter.InvokeChangedActionInternal()
at Telerik.Windows.Documents.Utils.SuspendChangingAndChangedActionCounter.InvokeChanged()
at Telerik.Windows.Documents.DocumentPosition.MoveToPosition(DocumentPosition newPosition)
at DocuPraxis.MainWindow.AddPurchaseDatePicker(Table table, TableRow row) in E:\Source\Repos\Panarc\DocuPraxisTel\DocuPraxis\DocuPraxisTemplateHandler.cs:line 1634
We are using a similar method to add DateProperties in other generated documents without problem, e.g.:
public void AddNotesDatePicker(Table table, TableRow row)
{
try
{
RadDocument document = doc_text.Document;
RadDocumentEditor editor = new RadDocumentEditor(document);
var dateCell = row.Cells.ToList()[0];
DocumentPosition position = new DocumentPosition(document);
string dateVal = string.Empty;
var span = dateCell.EnumerateChildrenOfType<Span>().FirstOrDefault();
if (span != null)
{
dateVal = span.Text;
if(String.IsNullOrEmpty(dateVal) || dateVal == " " )
{
dateVal = DateTime.Now.ToString("dd/MM/yyyy");
}
span.Text = " ";
}
position.MoveToDocumentElementStart(dateCell.Blocks.First());
document.CaretPosition.MoveToPosition(position);
editor.ChangeFontFamily(new FontFamily(CGlobals.docu_default_font));
editor.ChangeFontSize(Unit.PointToDip(CGlobals.docu_default_font_size));
DateProperties dataProperties = new DateProperties();
dataProperties.FullDate = DateTime.Parse(dateVal);
dataProperties.IsTemporary = false;
dataProperties.StyleName = "TemplateFields";
editor.InsertStructuredDocumentTag(dataProperties);
doc_text.Document = document;
table.Rows.ElementAdded += doc_text_NoteChanged;
}
catch { }
}
hi
I was using RadWindow as my main window.
it was correctly in the 2019 version but after updating to the new version the preview stopped showing.
What should I do to solve the problem?
------------------------------------------------
i found my answer in https://docs.telerik.com/devtools/wpf/controls/radwindow/how-to/use-radwindow-as-user-control
i must add
Style="{StaticResource RadWindowStyle}"
to radwindow prperty
Hi Team,
I need to stop refreshing once the filter is applied.
Example.I have lot of items in one panel ,If I selected item1 in that panel and applied filter in the RadPropertyGrid for some fields.
And then I will select sencond item in the grid.Now,the RadPropertyGrid should display the filtered fields but it showing entire fileds.
How to achieve this.
Or give me a solution to set the text for the searchasyoutype textbox from codebehind
Can you please help me to creating a custom connect.
Can you give me a small example as shown in below picture.
Hello,
I have an application where I store and add messages from the database. On startup I manually ladd the last so much messages from the database.
When I initially load, all messages and TimeBreaks are displayed fine. However the last message is not in view. The Chat shows the first lines and the scroll bar is positioned at the top, not at the bottom.
When I add new messages via the inputline, the message is in view
I use Telereik 2024.3.821.462
These message are added using the followin code:
View (code behind) => SendMessage event
private void RadChat_SendMessage(object sender, SendMessageEventArgs e)
{
e.Handled = true;
var updatedMessageText = (e.Message as TextMessage).Text;
ViewModel.AddMessage(updatedMessageText);
}
ViewModel => AddMessages
public async void AddMessage(string updatedMessageText)
{
Message newMessage = new Message();
newMessage.Author = CurrentAuthor.Name;
newMessage.MessageDate = DateTime.Now;
newMessage.MessageText = updatedMessageText;
newMaxMessageId = _dashboardDao.InsertMessages(newMessage);
ReadMessages();
}
private async void ReadMessages()
{
IsReloading = true;
newMaxMessageId = _dashboardDao.GetMaxMessageID();
if (newMaxMessageId > currentMaxMessageId)
{
IEnumerable<Message> newMessages = await _dashboardDao.GetNewMessages(currentMaxMessageId, _sharedVM.NumMessageBoardMessages);
newMessages = newMessages.OrderBy(x => x.MessageId).ToList();
if (newMessages.Count() > 0)
{
if (!IsActive)
{
if (_ShowNewMessages)
{
numNewMessages += newMessages.Count();
HasMessagesData hasMessagesData = new HasMessagesData(true, numNewMessages);
_sharedVM.HasMessages = hasMessagesData;
}
else
{
numNewMessages = 0;
}
}
else
{
numNewMessages= 0;
}
NewTextMessages = new ObservableCollection<TextMessageModel>();
newMessages = newMessages.Where(x => x.MessageId > currentMaxMessageId);
NewTextMessages.Clear();
foreach (Message message in newMessages)
{
if (message.Author == CurrentUser)
{
NewTextMessages.Add(new TextMessageModel() { Text = message.MessageText, Author = CurrentAuthor, CreationDate = message.MessageDate });
}
else
{
NewTextMessages.Add(new TextMessageModel() { Text = message.MessageText, Author = new Author(message.Author), CreationDate = message.MessageDate });
}
if (_ShowNewMessages)
{
_eventAggregator.GetEvent<NewMessageShownEvent>().Publish();
}
}
currentMaxMessageId = newMessages.Last().MessageId;
OnPropertyChanged(nameof(NewTextMessages));
}
}
_ShowNewMessages = true;
IsReloading = false;
}
View (code behind) triggerd by OnPropertyChanged(nameof(NewTextMessages))
his.ViewModel.PropertyChanged += (sender, args) =>
{
if (args.PropertyName == "NewTextMessages")
{
AddNewMessages();
}
};
private void AddNewMessages()
{
foreach (var newMessage in ViewModel.NewTextMessages)
{
if (chat.LastMessage == null)
{
this.chat.AddTimeBreak(newMessage.CreationDate.DayOfWeek.ToString() + " " + newMessage.CreationDate.ToString("MMMM") + " " + newMessage.CreationDate.Day.ToString() + ", " + newMessage.CreationDate.Year);
}
else
{
if ((chat.LastMessage.CreationDate.Year != newMessage.CreationDate.Year) || (chat.LastMessage.CreationDate.Month!= newMessage.CreationDate.Month) || (chat.LastMessage.CreationDate.Day != newMessage.CreationDate.Day))
{
this.chat.AddTimeBreak(newMessage.CreationDate.DayOfWeek.ToString() + " " + newMessage.CreationDate.ToString("MMMM") + " " + newMessage.CreationDate.Day.ToString() + ", " + newMessage.CreationDate.Year);
}
}
var textMessage = new TextMessage(newMessage.Author, newMessage.Text, "sent", newMessage.CreationDate);
this.chat.AddMessage(textMessage);
}
}
Hi,
I need to add a DateField to a TableCell in a RichTextBox so that when a user clicks on the cell in the UI a calendar is displayed.
I can see from the XAML that this is achieved by using the InsertSdtCommand with a CommandParameter of Date, how can a similar result be achieved from within the code.
Thank you.