Я хотел бы добавить валидатор для проверки длины (<100 символов) входного текстового поля.
Текстовое поле, созданное внутри таблицы данных из привязанного столбца: </p>
<asp:BoundColumn DataField="Comment" HeaderText="Comment"></asp:BoundColumn>
В своем коде я реализовал свое текстовое поле в функции CustomizeItem:
private void CustomizeEditItem(DataGridItem item)
{
TextBox lCommentTextBox = ((TextBox)item.Cells[(int)DigitalCalendarGridEnum.COMMENT_COLUMN].Controls[0]);
//RegularExpressionValidator test = new RegularExpressionValidator();
//test.ID = "regularExpressionValidatorUnique";
//test.ControlToValidate = lCommentTextBox.UniqueID;//.Replace("$", "_");
//test.ValidationExpression = "^[\\s\\S]{0,100}$";
//test.ErrorMessage = "Please enter a maximum of 100 characters";
//test.Display = ValidatorDisplay.Dynamic;
//lCommentTextBox.Controls.Add(test);
lCommentTextBox.Width = Unit.Pixel(90);
lCommentTextBox.TextMode = TextBoxMode.MultiLine;
lCommentTextBox.Rows = 4;
}
В комментарии я пытался реализовать Validator, но получил ошибку:
Unable to find control id 'DigitalCalendarGrid$ctl12$ctl21' referenced by the 'ControlToValidate' property of 'regularExpressionValidatorUnique'.
Я также пытался реализовать валидатор, например, в aspx:
<asp:TemplateColumn HeaderText="Comment">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Comment") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tbComment" runat="server" CssClass="inReq" AutoPostBack="True" TextMode="MultiLine" Rows="4" Width="90">
</asp:TextBox>
<asp:RegularExpressionValidator ID="CommentTextBoxValidator" runat="Server" ControlToValidate="tbComment" ValidationExpression="^[a-zA-Z0-9]^.{0,100}$" ErrorMessage="Comment should not exceed 100 characters" Display="None"></asp:RegularExpressionValidator>
</EditItemTemplate>
</asp:TemplateColumn>
Но: A это испортило мою сетку (слишком большое) и B это не работает.
Где я не прав?