0

TextBoxesを含むListViewがあります。TextBox AI に値を入力すると、計算された値が TextBox B に表示されます。コードビハインドでこれを実行しています。ListView をUpdatePanelに配置するまで、これはうまく機能します。

OnTextChangedで、いくつかの計算/データベース アクションを実行したいと思います (下の例では、挿入された値に 2 を掛けるだけです)。値を入力するたびに完全なPostBackを実行したくないので、UpdatePanel を挿入しました。また、同じスクロール位置に留まりたいからです。

最初に値を入力すると、OnTextChanged メソッドはすべてを正常に実行しますが、2 回目は 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();
}  
4

0 に答える 0