UpdatePanel中带有TextBox的ListView在OnTextChanged后不返回值

时间:2012-12-03 10:06:31

标签: asp.net ajax listview textbox updatepanel

我有 ListView ,其中包含 TextBoxes 。 当我在TextBox A中输入一个值时,我希望在TextBox B中显示一个计算值。我在CodeBehind中执行此操作。 这很有效,直到我将ListView放在 UpdatePanel

OnTextChanged 上,我想做一些计算/数据库操作(在下面的示例中,我只是将插入的值乘以2)。 因为每次输入值时我都不想做完整的 PostBack ,所以我插入了一个UpdatePanel。另外因为我想保持相同的滚动位置。

第一次我输入一个值,OnTextChanged方法会按预期的方式执行所有操作,但第二次 UpdatePanel似乎会删除所有计算值并且只返回第一次插值。

在调试模式下,一切运行良好,也适用于IE8,但不适用于FireFox,Chrome或IE9。 我假设我没有使用UpdatePanel,因为我应该这样做?

aspx页面:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Testing.aspx.cs" Inherits="Sales_NewOrderPOS" ClientIDMode="AutoID"%>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>

 <asp:ListView ID="ListView1" runat="server" DataSourceID="ObjectDataSource1">
    <LayoutTemplate>
        <table>
        <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder>
        </table>
    </LayoutTemplate>

    <ItemTemplate>
        <tr>
            <td>
                <asp:Label ID="lblItemNo" Text='<%# Eval("ItemNo") %>'  runat="server"></asp:Label>
            </td>
            <td>
                <asp:Label ID="lblItemDecription" Text='<%# Eval("ItemDescription") %>'  runat="server"></asp:Label>
            </td>
            <td>
                <asp:TextBox ID="txtPalletQuantity" runat="server" Width="30px" OnTextChanged="TextChangedPallet" AutoPostBack="true" ></asp:TextBox>
            </td>
            <td>
                <asp:TextBox ID="txtUnitQuantity" runat="server" Width="30px"></asp:TextBox>
            </td>
        </tr> 
   </ItemTemplate>
</asp:ListView>

</ContentTemplate>
</asp:UpdatePanel>

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="SP_SelectItems" TypeName="ItemClass">
</asp:ObjectDataSource>

</asp:Content>

代码背后:

protected void Page_Load(object sender, EventArgs e)
{

}

protected void TextChangedPallet(object sender, EventArgs e)
{
    TextBox txtPalletQuantity = (TextBox)sender;
    ListViewItem item = (ListViewItem)txtPalletQuantity.NamingContainer;
    TextBox txtUnitQuantity = (TextBox)item.FindControl("txtUnitQuantity");
    txtUnitQuantity.Text = ((Convert.ToDecimal(txtPalletQuantity.Text) * 2)).ToString();
}  

0 个答案:

没有答案