Текстовое поле за пределами DetailsView - RequiredFieldValidator не срабатывает

все. Это официально мой первый пост на StackOverflow. Отличный сайт, и он часто мне помогал, но я не могу найти на него ответа.

У меня есть форма asp.net с TextBox, у которой есть RequiredFieldValidator. Далее следует DetailsView с включенными функциями редактирования и удаления. Текстовое поле НЕ находится внутри DetailsView. Мне нужно, чтобы RequiredFieldValidator запускался, когда я нажимаю команды «Изменить» и / или «Удалить».

Вот мой код для двух элементов управления. Я могу опубликовать все это с кодом, но это много для публикации, если в ней нет необходимости.

TIA за вашу помощь.

Али ................................................. .......................

<asp:TextBox ID="txtReason" runat="server" Width="500px"></asp:TextBox>         <asp:RequiredFieldValidator ID="rfvReason" runat="server"  ControlToValidate="txtReason" 
        ErrorMessage="Reason is required for Edit/Delete"></asp:RequiredFieldValidator>

<asp:DetailsView ID="dvCOHDetail" runat="server" Height="50px" Width="700px" DataKeyNames="RecID" DataSourceID="sdsCOHIncident" AutoGenerateRows="False" OnDatabound="dvCOHDetail_DataBound" AutoGenerateEditButton="False" AutoGenerateDeleteButton="False" OnItemUpdated="dvCOHDetail_ItemUpdated"  OnItemDeleting="dvCOHDetail_ItemDeleting">
   <Fields>
   <asp:TemplateField HeaderText="ACTION:">
    <ItemTemplate>
     <asp:LinkButton ID="LinkButton2" runat=server Text="Edit" CommandName="edit"/>
     <asp:LinkButton ID="LinkButton1" runat="server" Text="Delete" CommandName="delete" OnClientClick="return confirm ( 'Are you sure you want to delete this record?' )"/>
    </ItemTemplate>
   </asp:TemplateField> 

........................................................................


person AliQS    schedule 03.10.2013    source источник


Ответы (2)


Вам необходимо сгруппировать все элементы управления, которые вы хотите проверить и которые происходит проверка. Поскольку вы хотите проверить TextBox при нажатии LinkButton, вам необходимо установить свойство ValidationGroup для TextBox, которое вы хотите проверить, и LinkButtons, который выполняет проверку, с одним и тем же значением (любой строкой).

<asp:TextBox ID="txtReason" runat="server" Width="500px"></asp:TextBox>

<asp:DetailsView ID="dvCOHDetail" runat="server" Height="50px" Width="700px" DataKeyNames="RecID" DataSourceID="sdsCOHIncident" AutoGenerateRows="False" OnDatabound="dvCOHDetail_DataBound" AutoGenerateEditButton="False" AutoGenerateDeleteButton="False" OnItemUpdated="dvCOHDetail_ItemUpdated"  OnItemDeleting="dvCOHDetail_ItemDeleting">
    <Fields>
        <asp:TemplateField HeaderText="ACTION:">
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton2" runat="server" ValidationGroup="ValidationGroup1" Text="Edit" CommandName="edit"/>
                <asp:LinkButton ID="LinkButton1" runat="server" ValidationGroup="ValidationGroup1" Text="Delete" CommandName="delete" OnClientClick="return confirm ( 'Are you sure you want to delete this record?' )"/>
            </ItemTemplate>
       </asp:TemplateField> 
    </Fields>
</asp:DetailsView>

<asp:RequiredFieldValidator ID="rfvReason" runat="server"  ControlToValidate="txtReason"
    ErrorMessage="Reason is required for Edit/Delete" ValidationGroup="ValidationGroup1" EnableClientScript="False"></asp:RequiredFieldValidator>
person Md. Ashaduzzaman    schedule 03.10.2013
comment
Идеально; Теперь я понимаю! Если вы не можете сказать, я немного новичок в .net. Спасибо вам обоим за ответы! - person AliQS; 03.10.2013
comment
Добро пожаловать. Вы можете проверить следующий URL, чтобы узнать больше о ValidationGroup. msdn.microsoft.com/en-us/library /ms227424(v=vs.100).aspx - person Md. Ashaduzzaman; 04.10.2013

Добрый день, я считаю, что если вы установите атрибут ValidationGroup для обеих кнопок в DetailsView, а также на RequiredFieldValidator, при нажатии кнопок валидатор должен запустить свое событие проверки. Атрибут ValidationGroup может быть любой строкой, которую вы хотите описать для группы проверок, которую вы пытаетесь проверить.

person mreyeros    schedule 03.10.2013