2013-07-16 48 views
0

我想獲取中繼器內部的所有文本框的值,但我不能。中繼器中的文本框不會返回值

目前的代碼是這樣的:

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> 

相關的摘錄代碼隱藏文本已改變的事件,我需要觸發該事件計算值顯示給用戶如此動態。

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 
+0

準確地說,你是什麼意思,你「無法獲得價值」?當你試圖獲得它會發生什麼? –

+0

所以@Johnsaunders,運行調試,發現文本框,但Text屬性將變空。 –

+0

您在什麼情況下檢查文本?嘗試在中繼器外部添加一個TextBox,看看新的TextBox是否保持其值。 –

回答

0

檢查,如果沒有任何重新綁定,即使你的TextChanged事件的觸發之前中繼器,作爲如。頁面加載。 如果有些東西與你的中繼器綁定,你將無法獲得任何這些值。