ASP.net Listview不显示插入的当前/新值

时间:2015-09-07 15:42:28

标签: asp.net vb.net webforms

我在ListView中获取新输入的记录时遇到问题。

在ItemTemplate的列表中,我用TextBox替换了标签。我还创建了一个按钮,它循环遍历ListView中的所有行,并在警报消息中显示AcName字段。如果我更新它(将AcName的文本更改为其他内容),它仍会显示之前已存在的记录,而不是我输入的新文本/值。下面的代码对我来说正常工作,但没有产生我想要的结果,这是新值。

HTML标记

<asp:ListView ID="ListView1"  InsertItemPosition="LastItem" runat="server" >    

  <ItemTemplate>
    <tr>
      <td>
        <asp:Label runat="server" ID="lblID" Text='<%#Eval("ID") %>'></asp:Label>
      </td>
      <td>
        <%--<asp:Label runat="server" ID="lblAcount" Text='<%#Eval("AcName") %>'></asp:Label>--%>
        <asp:TextBox ID="lblAcount" runat="server" CssClass="form-control" Text='<%#Bind("AcName") %>'></asp:TextBox>
        </td>
        <td>
          <%--<asp:Label runat="server" ID="lblNaration" Text='<%#Eval("Naration") %>'></asp:Label>--%>
          <asp:TextBox ID="lblNaration" runat="server" CssClass="form-control" Text='<%#Bind("Naration") %>'></asp:TextBox>
        </td>
        <td>
          <%--<asp:Label runat="server" ID="lblPaidAmount" Text='<%#Eval("PaidAmount") %>'></asp:Label>--%>
          <asp:TextBox ID="lblPaidAmount" runat="server" CssClass="form-control" Text='<%#Bind("PaidAmount") %>'></asp:TextBox>
        </td>
        <td>
          <%--<asp:Label runat="server" ID="lblDeductAmount" Text='<%#Eval("DeductionAmount") %>'></asp:Label>--%>
          <asp:TextBox ID="lblDeductAmount" runat="server" CssClass="form-control" Text='<%#Bind("DeductionAmount") %>'></asp:TextBox>
        </td>
        <td>
          <asp:LinkButton ID="DeleteButton" cssClass="btn btn-info fa fa-trash-o" runat="server" CommandName="DeleteIt"></asp:LinkButton>

        <td>
        </td>
      </tr>

      <asp:Panel ID="Panel2" runat="server" Visible="False">
        <tr>
          <td>
            <asp:Label ID="Label12" runat="server" Text="Credit Acount"></asp:Label>
            <asp:TextBox ID="txtAcName" runat="server" CssClass="form-control" Text='<%#Bind("AcName") %>'></asp:TextBox>
          </td>
        </tr>
      </asp:Panel>
    </ItemTemplate>

  </asp:ListView>

按钮处理程序

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

    For i As Integer = 0 To ListView1.Items.Count() - 1

        Dim txtAcNames As TextBox = TryCast(ListView1.Items(i).FindControl("txtAcName"), TextBox)

        Dim msg As String
        msg = "<script language="'javascript'">"
        msg += "alert('" & txtAcNames.Text & "');"
        msg += "</script>"
        Response.Write(msg)

    Next

    'txtTotal1.Text = Paid

End Sub

上面的代码对我有用,问题是当我在ListView的TextBox中输入数据时,它会向我显示绑定到listview的旧值,而不是我输入的新值。

我想要的是它应该向我显示我在ListView TextBox中运行时输入的新值。

1 个答案:

答案 0 :(得分:1)

您正在txtAcName.Text警告Button1_Click,但您正在运行时更改lblAcount.Text的值。因此,您看到的旧值实际上来自其他文本框。

请注意,您将两个文本框绑定到同一属性<%# Bind("AcName") %>