views:

226

answers:

2

I have two datalists. One works like a menu where you click on a link to fill the othe datalist. I also have added a next and previous linkbutton to move between the different "pages" so that you do not have to change using the menu datalist.

Now in code behind depending on which values I get from the database I add a RegularExpressionValidator.

This works great until I want to use the next button (or previous for that matter). Even if all the controls that are checked are valid when compared with the RegularExpressionValidator I never get to load the new values. The next and previous buttons fires the datalist selected index change event and then I check if it is the previous or next button that was clicked.

But the previous and next buttons are numb. They don't even fire the event. It is like clicking on the background. Nothing happens.

I have chcked the PageIs.Valid and it is true.

Does anyone have a clue what it could be that is causing this behavior?

Thanks in advance!

Some of the texts down there is in Swedish but it shouldn't matter for the code.

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>
A: 

So for case two you accept any non-empty string of digits and spaces.

Is that your intent?

MarkusQ
Actually, yes. It might change down the road but at the moment it is good enough.
Fred
+1  A: 

I thought I solved the issue but it just stopped checking.

Fred
Hmm, I was a bit hasty there. It just stopped working all together.
Fred