转发器中的文本框不返回值

时间:2013-07-16 18:21:56

标签: asp.net vb.net textbox updatepanel repeater

我正在尝试获取转发器内所有文本框的值,但我不能。

目前代码是这样的:

ASPX

<asp:UpdatePanel ID="UpdatePanel5" runat="server" UpdateMode="Conditional" EnableViewState="true" RenderMode="Inline" ChildrenAsTriggers="False">
<ContentTemplate>
    <asp:Repeater ID="rptPagsTipoPapel" runat="server">
        <ItemTemplate>
            <ul class="clrfix">
                <li>
                    <asp:HiddenField ID="hdIdTipoPapelPubEd" runat="server" Value='<%# Eval("IdTipoPapel") %>' />
                    <asp:Label ID="lblTipoPapelPubEd" AssociatedControlID="txtNrPaginasCor" runat="server" Text='<%# Eval("TipoPapel") %>'></asp:Label>
                </li>
            </ul>
            <ul class="clrfix">
                <li>
                    <asp:Label ID="Label27" runat="server" Text="Páginas em Cores" AssociatedControlID="txtNrPaginasCor"></asp:Label>
                    <span class="legenda">(unidades)</span><br />
                    <asp:TextBox ID="txtNrPaginasCor" runat="server" Width="145" MaxLength="6" AutoPostBack="True"
                        ValidationGroup="vgpCadastroEdicao" OnTextChanged="txtNrPaginasCor_TextChanged" onkeypress="return(ApenasNumero(this,event));"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="rfvNrPaginasCor" runat="server" ControlToValidate="txtNrPaginasCor"
                        ErrorMessage="Páginas em Cores é um campo obrigatório." Display="None" ValidationGroup="valCadastroEdicao">*</asp:RequiredFieldValidator>
                    <asp:CompareValidator ID="cvlNrPaginasCor" runat="server" ErrorMessage="O campo Páginas em Cores é inválido, favor corrigí-lo."
                        ControlToValidate="txtNrPaginasCor" Operator="DataTypeCheck" Type="Integer" Display="None"
                        ValidationGroup="valCadastroEdicao">*</asp:CompareValidator>
                    <asp:CompareValidator ID="cvlGrupoNrPaginasCor" runat="server" ErrorMessage="O campo Páginas em Cores é inválido, favor corrigí-lo."
                        ControlToValidate="txtNrPaginasCor" Operator="DataTypeCheck" Type="Integer" Display="None"
                        ValidationGroup="vgpCadastroEdicao">*</asp:CompareValidator>
                </li>
                <li>
                    <asp:Label ID="Label28" runat="server" Text="Páginas em P/B" AssociatedControlID="txtNrPaginasPb"></asp:Label>
                    <span class="legenda">(unidades)</span><br />
                    <asp:TextBox ID="txtNrPaginasPb" runat="server" Width="145" MaxLength="6" AutoPostBack="True"
                        ValidationGroup="vgpCadastroEdicao" OnTextChanged="txtNrPaginasPb_TextChanged" onkeypress="return(ApenasNumero(this,event));"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="rfvNrPaginasPb" runat="server" ControlToValidate="txtNrPaginasPb"
                        ErrorMessage="Páginas em P/B é um campo obrigatório." Display="None" ValidationGroup="valCadastroEdicao">*</asp:RequiredFieldValidator>
                    <asp:CompareValidator ID="cvlNrPaginasPb" runat="server" ErrorMessage="O campo Páginas em P/B é inválido, favor corrigí-lo."
                        ControlToValidate="txtNrPaginasPb" Operator="DataTypeCheck" Type="Integer" Display="None"
                        ValidationGroup="valCadastroEdicao">*</asp:CompareValidator>
                    <asp:CompareValidator ID="cvlGrupoNrPaginasPb" runat="server" ErrorMessage="O campo Páginas em P/B é inválido, favor corrigí-lo."
                        ControlToValidate="txtNrPaginasPb" Operator="DataTypeCheck" Type="Integer" Display="None"
                        ValidationGroup="vgpCadastroEdicao">*</asp:CompareValidator>
                </li>
            </ul>
        </ItemTemplate>
    </asp:Repeater>
 </ContentTemplate>

与代码隐藏的Text Changed事件相关的摘录,我需要触发此事件来计算要向用户显示的动态值。

    Protected Sub txtNrPaginasCor_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
    MostrarCustoProducaoPublicacao()
End Sub

Protected Sub txtNrPaginasPb_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
    MostrarCustoProducaoPublicacao()
End Sub

我想从文本框中获取值的代码片段:

Protected Sub MostrarCustoProducaoPublicacao()
    Dim lIntTiragem As Integer = Nothing
    Dim lIntNrPaginasPbJornal As Integer = Nothing
    Dim lIntNrPaginasCorJornal As Integer = Nothing
    Dim lIntNrPaginasPbOffset As Integer = Nothing
    Dim lIntNrPaginasCorOffset As Integer = Nothing
    Dim IdPublicacao As Integer = SQL.RetiraSQLInjection(hdIdPublicacao.Value)


        For Each itemTipoPapel As RepeaterItem In rptPagsTipoPapel.Items
            Dim hdTipoPapel As HiddenField = CType(itemTipoPapel.FindControl("hdIdTipoPapelPubEd"), HiddenField)
            Dim txtNrPagPB As TextBox = CType(itemTipoPapel.FindControl("txtNrPaginasPb"), TextBox)

            Dim txtNrPagCor As TextBox = CType(itemTipoPapel.FindControl("txtNrPaginasCor"), TextBox)
            If hdTipoPapel.Value = 1 Or hdTipoPapel.Value = 2 Then
                If Not txtNrPagPB.Text.Equals("") Then
                    lIntNrPaginasPbJornal += SQL.RetiraSQLInjection(txtNrPagPB.Text)
                End If
                If Not txtNrPagCor.Text.Equals("") Then
                    lIntNrPaginasCorJornal += SQL.RetiraSQLInjection(txtNrPagCor.Text)
                End If
            ElseIf hdTipoPapel.Value = 3 Or hdTipoPapel.Value = 4 Then
                If Not txtNrPagPB.Text.Equals("") Then
                    lIntNrPaginasPbOffset += SQL.RetiraSQLInjection(txtNrPagPB.Text)
                End If
                If Not txtNrPagCor.Text.Equals("") Then
                    lIntNrPaginasCorOffset += SQL.RetiraSQLInjection(txtNrPagCor.Text)
                End If
            End If
        Next
End Sub

1 个答案:

答案 0 :(得分:0)

在textChanged事件触发之前,检查是否没有重新绑定转发器,例如。页面加载。 如果某些东西它绑定了你的中继器,你将无法获得任何这些值。