2009-03-15 2 views
1

두 명의 데이터리스트가 있습니다. 하나는 데이터 목록을 채우기 위해 링크를 클릭하는 메뉴처럼 작동합니다. 메뉴 데이터리스트를 사용하여 변경할 필요가 없도록 다른 "페이지"사이를 이동하기 위해 다음 및 이전 링크 버튼을 추가했습니다.RegularExpressionValidator가 다음 페이지로 이동하지 못합니다.

데이터베이스에서 가져온 값에 따라 코드가 뒤떨어 지므로 RegularExpressionValidator를 추가합니다.

다음 버튼 (또는 그 문제에 대해서는 이전)을 사용하기 전까지는이 방법이 유용합니다. 검사 된 모든 컨트롤이 RegularExpressionValidator와 비교할 때 유효하더라도 새 값을로드하지 않습니다. 다음 버튼과 이전 버튼은 데이터리스트가 선택한 인덱스 변경 이벤트를 발생시킨 다음 클릭 한 이전 또는 다음 버튼인지 확인합니다.

그러나 이전 및 다음 버튼은 감각이 없습니다. 그들은 심지어 행사를 해고하지 않습니다. 배경을 클릭하는 것과 같습니다. 아무 반응이 없습니다.

나는 PageIs.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를 점검하여 기본 로직이 작동하는지 확인하십시오. 그런 다음 코드 숨김에서 ValidationExpression 만 전환하면됩니다.

+0

흠, 필자는 필드가 채워진 상태에서 RequiredFieldVlidator처럼 작동한다고 생각했습니다. RegularExpressionValidators가 false를 반환하는지 확인해야합니까? – Fred

+0

서버 측의 유효성을 다시 검사하는 것이 가장 좋습니다 (필수). 그러나 그것은 당신의 문제가 될 수 없습니다. –

+0

이상한 점은 모든 컨트롤이 유효하다는 것입니다 (페이지에 유효하지 않은 텍스트 없음). 그러나 새 값은로드되지 않습니다. 나는 내가 여기서 기본적인 것을 놓치고 있다고 생각하고있다. 나는 내 페이지가 어떻게 작동하는지 보여 주거나 설명 할 것이다. – Fred

0

따라서 두 번째 경우에는 공백이 아닌 공백 문자열을 허용합니다.

당신의 의도입니까?

+0

사실, 그렇습니다. 길을 바꿀 수도 있지만 현재로서는 충분합니다. – Fred

1

나는이 문제를 해결할 것이라고 생각했지만 점검을 중단했다.

+0

흠, 나는 조금 성급했다. 그것은 단지 함께 일하는 것을 그만 두었습니다. – Fred

관련 문제