读书人

求解决有关问题的办法

发布时间: 2012-06-02 14:16:14 作者: rapoo

求解决问题的办法
在一个页面中有一个GRID,它生成的列表中,在每一行都有两个输入框,在其中的一个输入值后,它的值会自动乘以一个数,然后显示到另一个输入框中,如何实现,要不刷新的。

[解决办法]
你的GRID是什么做的?如果是table,那么可以
使用parentNode.parentNode查找到所在的行,然后就可以找到该行的其他输入框了。


[解决办法]
如果两个textbox的位置不相邻,要根据情况修改nextSibling.

C# code
    <form id="form1" runat="server">        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">        <Columns>            <asp:BoundField DataField="ID" HeaderText="ID" />            <asp:BoundField DataField="Name" HeaderText="Name" />            <asp:TemplateField HeaderText="InputOne">                <ItemTemplate>                    <asp:TextBox ID="TextBox1" runat="server" onblur="Caculate(this)"></asp:TextBox>                </ItemTemplate>            </asp:TemplateField>            <asp:TemplateField HeaderText="InputTwo">                <ItemTemplate>                    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>                </ItemTemplate>            </asp:TemplateField>        </Columns>        </asp:GridView>    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />        <script type="text/javascript">            function Caculate(obj){                if(obj.value.length<=0){                    return;                }                var ct = 5;                var PN = obj.parentNode;                while(PN.tagName!="TD")                    PN=PN.parentNode;                var nt = PN.nextSibling;                while(nt.tagName!="TD")                    nt = nt.nextSibling;                var ntTxt = nt.firstChild;                ntTxt.value = ct*obj.value;            }        </script>    </form> 

读书人网 >asp.net

热点推荐