ユーザーがアップロードしているExcelファイルから入力されたグリッドビューがあります。コード:
<asp:GridView ID="gvData" runat="server" SkinID="GridView" Width="100%" AllowPaging="True" AllowSorting="false"
EmptyDataText="Data not found." AutoGenerateColumns="false" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true"
OnRowEditing="gvData_RowEditing" OnRowCancelingEdit="gvData_RowCancelingEdit" OnRowUpdating="gvData_RowUpdating" OnRowDeleting="gvData_RowDeleting">
<Columns>
<asp:TemplateField HeaderText="Date" HeaderStyle-ForeColor="White">
<ItemTemplate>
<asp:Label ID="lblDate" runat="server" Text='<%#Eval("Date", "{0:MM/dd/yyyy}")%>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtDate" runat="server" Text='<%#Eval("Date", "{0:MM/dd/yyyy}")%>' CssClass="datepicker"/>
<asp:RequiredFieldValidator ID="rfvDate" runat="server" CssClass="validator" ErrorMessage="Required" Display="Dynamic" ControlToValidate="txtDate"/>
<asp:CompareValidator id="dateValidator" runat="server" CssClass="validator" Type="Date" Operator="DataTypeCheck" ControlToValidate="txtDate" ErrorMessage="Please enter a valid date."/>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Ref Number" HeaderStyle-ForeColor="White">
<ItemTemplate>
<asp:Label ID="lblRefNumber" runat="server" Text='<%#Eval("Ref Number")%>' />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtRefNumber" runat="server" Text='<%#Eval("Ref Number")%>' />
<asp:RegularExpressionValidator ID="revRefNumber" runat="server" ControlToValidate="txtRefNumber" CssClass="validator" Display="Dynamic" ErrorMessage="Numbers only"
ValidationExpression="^[0-9]+$"/>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
ご覧のとおり、関連するテキストボックスが編集されているときにのみ動作を開始するため、各フィールドにはバリデーターがほとんどありません。たとえば、ユーザーが編集を終了した後、日付列のテキストボックスに有効な日付値が含まれていることを確認しています。問題は、データが最初に Excel ファイルからアップロードされるときに、ユーザーがこれらのセルに任意のデータを挿入できることです。バリデーターは完全に「バイパス」されます。
アップロードされたデータにこれらのバリデーターを適用して強制する方法があるかどうか知りたいです。