2015-09-07 47 views
2

我在ListView中获取新输入的记录有问题。ASP.net 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的文本框中输入数据就说明我的旧值是绑定到列表视图,而不是我输入的新值。

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

+0

问题仍不清楚我的两个文本框。你输入数据到'lblAcount'文本框,那么你怎么做,你声称它显示旧值?此外,这个'ListView'有一个数据源?它在哪里?请编辑您的问题,添加更多信息并删除不需要的代码。 – zed

+0

先生,我已经将标签更改为文本框给列表看起来像可编辑的网格,现在button1当我点击它我显示我警告在列表视图中的所有txtAcNames问题是当我更改文本框的值是lblAcName并再次按下按钮1我仍然显示我相同的旧值不是我刚刚输入的值。那么是否有解决方案。 – SMHasnain

+1

您正在提醒'txtAcName.Text',但您正在更改'lblAcount.Text',是不是正是这个问题?您看到的旧值实际上来自其他文本框(您已将两个绑定到同一个属性'<%#Bind(“AcName”)%>') – zed

回答

1

您正在提醒txtAcName.TextButton1_Click,但是您在运行时更改lblAcount.Text的值。所以,您看到的旧值实际上来自其他文本框。

注意,您必须绑定到同一属性<%# Bind("AcName") %>