2009-03-15 3 views
1

У меня есть два источника данных. Один работает как меню, где вы нажимаете ссылку, чтобы заполнить datalist. Я также добавил следующую и предыдущую ссылку, чтобы переместиться между разными «страницами», чтобы вам не пришлось изменять с помощью меню datalist.RegularExpressionValidator не позволит мне перейти на следующую страницу

Теперь в коде, в зависимости от того, какие значения я получаю из базы данных, добавляю RegularExpressionValidator.

Это отлично работает, пока я не хочу использовать следующую кнопку (или предыдущую в этом отношении). Даже если все контролируемые элементы управления действительны по сравнению с RegularExpressionValidator, я никогда не загружаю новые значения. Следующая и предыдущая кнопки запускают событие изменения индекса, выбранное каталогом, и затем проверяю, была ли эта кнопка нажата предыдущая или следующая.

Но предыдущие и следующие кнопки онемели. Они даже не запускают это событие. Это как щелчок на фоне. Ничего не произошло.

Я выбрал страницу Page 1 Valid, и это правда.

Кто-нибудь знает, что может быть причиной такого поведения?

Заранее благодарен!

Некоторые тексты на шведском языке, но это не имеет значения для кода.

rev_checkfieldvalue.ControlToValidate = "tb_detailValue"; 
switch (iDataTypeId) 
{ 
    case 2: 
     rev_checkfieldvalue.ValidationExpression = @"^\d*[0-9 ]+$"; 
     rev_checkfieldvalue.Text = "Fältet får endast innehålla siffror och mellanslag."; 
     break; 
    case 3: 
     break; 
    case 4: 
     break; 
    case 5: 
     rev_checkfieldvalue.ValidationExpression = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"; 
     rev_checkfieldvalue.Text = "Fältet får endast innehålla en e-postadress."; 
     break; 

} 
e.Item.Controls.AddAt(32, rev_checkfieldvalue); 

<asp:DataList ID="dl_componentInfo" DataKeyField="ComponentId" runat="server" OnItemDataBound="dl_componentInfo_OnItemDataBound" OnItemCommand="dl_componentInfo_OnItemCommand"> 
    <ItemTemplate> 
     <table> 
      <tr> 
       <td colspan="2"><asp:Label ID="lb_componentName" SkinID="lblHeader" runat="server" Text='<%# Eval("ComponentName") %>' /></td> 
      </tr> 
      <tr> 
       <td colspan="2">Fält markerade med * är obligatoriska</td> 
      </tr> 
      <tr> 
       <td>&nbsp;</td> 
       <td> 
        <asp:DataList ID="dl_details" OnItemDataBound="dl_details_OnItemDataBound" runat="server"> 
         <ItemTemplate> 
          <table> 
           <tr> 
            <td colspan="2"> 
             <asp:Label ID="lbl_detailName" Text='<%# Eval("DetailName") %>' runat="server"></asp:Label> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <asp:Label ID="lbl_custDetName" runat="server" /> 
            </td> 
            <td align="left"> 
             <%--Always hidden values--%> 
             <asp:Label ID="lbl_detailTypeId" Visible="false" Text='<%# Eval("DetailTypeId") %>' runat="server" /> 
             <asp:Label ID="lbl_detailId" Visible="false" Text='<%# Eval("DetailId") %>' runat="server" /> 
             <asp:Label ID="lbl_dataTypeId" Visible="false" Text='<%# Eval("DataTypeId") %>' runat="server" /> 
             <asp:Label ID="lbl_customerEventValueId" Visible="false" Text='<%# Eval("CustomerEventValueId") %>' runat="server" /> 
             <asp:Label ID="lbl_reqFld" Visible="false" Text='<%# Eval("ReqFld") %>' runat="server" /> 

             <%--Sometimes visible values--%> 
             <asp:Label ID="lbt_detailValue" Visible="false" Text='<%# Eval("PresetDetailValue") %>' runat="server" /> 
             <asp:Label ID="lbtb_detailValue" Visible="false" Text='<%# Eval("PresetDetailValue") %>' runat="server" /> 
             <asp:Label ID="lbth_detailValue" Visible="false" Text='<%# Eval("PresetDetailValue") %>' runat="server" /> 
             <asp:Label ID="lbc_detailValue" Visible="false" Text='<%# Eval("PresetDetailValue") %>' runat="server" /> 
             <asp:DropDownList ID="dd_detailValue" Visible="false" runat="server"></asp:DropDownList> 
             <%--Om det ska gå att markera/avmarkera alla så använd AJAX--%> 
             <asp:CheckBoxList ID="cbl_detailValue" RepeatDirection="Horizontal" RepeatLayout="flow" Visible="false" runat="server" /> 
             <asp:CheckBox ID="cb_detailValue" Visible="false" Text='<%# Eval("PresetDetailValue") %>' runat="server" /> 
             <asp:TextBox ID="tb_detailValue" Visible="false" Text='<%# Eval("PresetDetailValue") %>' runat="server" /> 
             <asp:TextBox ID="ta_detailValue" Visible="false" Text='<%# Eval("PresetDetailValue") %>' runat="server"></asp:TextBox> 
            </td> 
           </tr> 
          </table> 
         </ItemTemplate> 
        </asp:DataList> 
       </td> 
      </tr> 
     </table> 
    </ItemTemplate> 
    <FooterTemplate> 
     <table width="600"> 
      <tr> 
       <td> 
        <asp:LinkButton id="lb_previous" Text="Föregående" CommandName="Previous" runat="server"/> 
       </td> 
       <td> 
        <asp:LinkButton id="lb_next" Text="Nästa" CommandName="Next" runat="server"/> 
       </td> 
      </tr> 
     </table> 
    </FooterTemplate> 
</asp:DataList> 

ответ

1

Фред, мы пропускаем некоторые важные детали здесь, например, как/если вы проверяете Page.Isvalid и т.д.

Похоже, что вы могли бы упростить вещи, размещая время разработки RegEx валидатор и установка всех соответствующие свойства. И, возможно, проверьте фиксированный RegEx, чтобы увидеть, работает ли базовая логика. Тогда вам нужно только переключить ValidationExpression в свой код.

+0

Хм, я думал, что он работал как RequiredFieldVlidator, где все нормально, заполняя поле. Должен ли я проверить, что RegularExpressionValidators возвращают false? – Fred

+0

Это лучшая (существенная) практика для повторной проверки серверной части. Но это не может быть вашей проблемой. –

+0

Странно, что все элементы управления кажутся действительными (на странице не отображаются тексты, которые они недействительны). Но он все равно не загрузит новые значения. Я думаю, что мне не хватает чего-то основного здесь. Я попытаюсь показать/объяснить, как работает моя страница. – Fred

0

Итак, для случая два вы принимаете любую непустую строку цифр и пробелов.

Это ваше намерение?

+0

Собственно, да. Это может измениться по дороге, но на данный момент это достаточно хорошо. – Fred

1

Я думал, что решил проблему, но она просто перестала проверяться.

+0

Хм, я был немного поспешным. Он просто прекратил работать вместе. – Fred

Смежные вопросы