当前位置: 代码迷 >> ASP.NET >> 求解决有关问题的办法
  详细解决方案

求解决有关问题的办法

热度:9037   发布时间:2013-02-25 00:00:00.0
求解决问题的办法
在一个页面中有一个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>
  相关解决方案