Я хочу иметь возможность передавать аргументы на сервер CustomValidator.
Я хочу это, потому что элемент управления, который я хочу проверить, находится в поле редактирования таблицы.
<telerik:GridTemplateColumn DataField="numbercancelled" DataType="System.Int32" FilterControlAltText="Filter numbercancelled column"
HeaderText="numbercancelled" SortExpression="Numbercancelled" UniqueName="numbercancelled">
<ItemTemplate>
<asp:Label runat="server" ID="lblNumbercancelled" Text='<%# Eval("numbercancelled") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="tbNumbercancelled" Text='<%# Bind("numbercancelled") %>'
MaxLength="10">
</asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="This is a required field"
ControlToValidate="tbNumbercancelled" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ErrorMessage="Please enter a number higher than 0"
ValidationExpression="^(0|[1-9][0-9]*)$" ControlToValidate="tbNumbercancelled"
Display="Dynamic"></asp:RegularExpressionValidator>
<asp:CustomValidator ID="NumberCancelledValidator"
runat="server" ErrorMessage="CustomValidator" ControlToValidate="tbNumbercancelled"
OnServerValidate="NumberCancelledValidator_ServerValidate"
></asp:CustomValidator>
</EditItemTemplate>
</telerik:GridTemplateColumn>
Я хочу передать идентификатор редактируемой в данный момент строки, потому что способ ее проверки зависит от строки, которую вы редактируете.
CustomValidator cvalid = (CustomValidator)source;
GridEditFormItem gv = (GridEditFormItem)cvalid.NamingContainer;
int ItemIndex = ((GridEditFormItem)gv.EditFormCell.NamingContainer).ItemIndex;
var grid = InkoopDetailGridEdit;
int ID = int.Parse(((Label)((GridDataItem)grid.Items[ItemIndex]).Cells[0].FindControl("ID")).Text);