2012-02-23 13 views
1

サーバーサイドのCustomValidatorに引数を渡したいと思っています。引数をサーバー側に渡す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> 

それが検証されますどのようにあなたが編集している行に依存しているため、私は、現在編集中の行のIDを渡したいです。次の例を使用して行のインデックスを取得することができます

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

答えて

2

:最後に

私はこの思い付いた

CustomValidator cvalid = (CustomValidator)source; 
GridViewRow gv = cvalid.NamingContainer; 
int index = gv.RowIndex; 
+0

さえ厳しいそれはそれがなかった、私の質問に直接答えではありませんでした私を答えに導く。 – NomenNescio

関連する問題