如何获得同一行的价值

时间:2019-02-26 15:34:05

标签: javascript asp.net

此表中有一些数据。当我编辑百分比时,如何获得供应数量的值?

下面是我的ASPX代码:

  <asp:GridView ID="grdSupplierItem" runat="server" AutoGenerateColumns="False" CssClass="Gridview3">
                                        <Columns>
                                            <asp:TemplateField HeaderText="Supplier">
                                                <ItemTemplate>
                                                    <asp:Label ID="lblAutoNum" Visible="false" Text='<%# Eval("AutoNum") %>' runat="server" />
                                                    <asp:DropDownList ID="ddlSupplier" runat="server" CssClass="form-control width250">
                                                    </asp:DropDownList>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="Sequence">
                                                <ItemStyle HorizontalAlign="Right"></ItemStyle>
                                                <ItemTemplate>
                                                    <asp:TextBox CssClass="form-control numbertext" onkeypress="return onlyNumber(event)" Width="80px" ID="txtSequence" Text='<%#String.Format("{0:n0}", DataBinder.Eval(Container.DataItem, "Sequence")) %>' runat="server"></asp:TextBox>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="Percentage (%)">
                                                <ItemStyle HorizontalAlign="Right"></ItemStyle>
                                                <ItemTemplate>
                                                    <asp:TextBox CssClass="form-control numbertext" onkeyup="javascript:text_changed(this);" ID="txtPercentage" AutoPostBack="false" OnTextChanged="txtPercentage_TextChanged" Text='<%# DataBinder.Eval(Container.DataItem, "SupplyPercentage") %>' runat="server"></asp:TextBox>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="Effective Date">
                                                <ItemTemplate>
                                                    <asp:TextBox CssClass="form-control datepicker" ID="txtEffectiveDate" data-provide="datepicker" runat="server" Width="120px"></asp:TextBox>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="Expired Date">
                                                <ItemTemplate>
                                                    <asp:TextBox CssClass="form-control datepicker" ID="txtExpiredDate" data-provide="datepicker" runat="server" Width="120px"></asp:TextBox>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="Unit Price(RM)">
                                                <ItemStyle HorizontalAlign="Right"></ItemStyle>
                                                <ItemTemplate>
                                                    <asp:TextBox CssClass="form-control numbertext text-right" OnTextChanged="txtUnitPrice_TextChanged" onkeypress="return isNumber(event)" ID="txtUnitPrice" AutoPostBack="true" Text='<%# DataBinder.Eval(Container.DataItem, "SellingPrice") %>' runat="server"></asp:TextBox>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="Supply Qty">
                                                <ItemStyle HorizontalAlign="Right"></ItemStyle>
                                                <ItemTemplate>
                                                    <asp:TextBox CssClass="form-control numbertext text-right" OnTextChanged="txtSupplyQty_TextChanged" AutoPostBack="true" onkeypress="return isNumber(event)" ID="txtSupplyQty" Text='<%# DataBinder.Eval(Container.DataItem, "SupplyQty") %>' runat="server"></asp:TextBox>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:TemplateField HeaderText="Supply Value">
                                                <ItemStyle HorizontalAlign="Right"></ItemStyle>
                                                <ItemTemplate>
                                                    <asp:TextBox CssClass="form-control numbertext text-right" OnTextChanged="txtSupplyValue_TextChanged" AutoPostBack="true" onkeypress="return isNumber(event)" ID="txtSupplyValue" Text='<%# DataBinder.Eval(Container.DataItem, "SupplyValue") %>' runat="server"></asp:TextBox>
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:ButtonField Text="&lt;img border=0 src=ImageFile/Delete1.gif&gt;" CommandName="Delete">
                                                <ItemStyle HorizontalAlign="Center"></ItemStyle>
                                            </asp:ButtonField>
                                        </Columns>
                                        <RowStyle CssClass="gridrow" />
                                        <SelectedRowStyle CssClass="gridheader" />
                                        <HeaderStyle CssClass="gridheader" />
                                        <AlternatingRowStyle CssClass="gridRowAlt" />
                                    </asp:GridView>

我曾经尝试过使用此JS,但只设法获得了Percentage(%)的值

     function text_changed(textObj) {
     value = textObj.value;
     var $otherInput = 
     textObj.closest('tr').find('input[id$="txtSupplyQty"]');
    }

我需要对Javascript代码进行一些计算。

2 个答案:

答案 0 :(得分:1)

您的<asp:TextBox />的ID一旦客户收到该页面就会更改。

如果使用JavaScript,则需要以其他方式获取客户端的文本框ID。如果您使用的是jQuery,它将看起来像这样:

const textBox = $find('<%= txtSupplyQty.ClientID %>');

但是除此之外,Web表单控件不像您在此处定义的那样支持onkeyup事件侦听器。

如果您确实想附加一个onkeyup事件,则必须在如上所述的脚本块中手动附加一个事件侦听器,或者必须在后面的代码中进行。

如果要在后面的代码中附加事件侦听器,则可以将其添加到Page_Load

txtPercentage.Attributes.Add("onKeyUp", "text_changed(this)");

答案 1 :(得分:0)

我对ASPX不熟悉,但是您应该使用查询选择器。另外,如果您有多个具有相同ID的文本字段,则可能会遇到麻烦,似乎是这种情况。改用类名来命名文本字段。

var anotherValue = textObj.closest(“ tr”)。querySelector(“ input.valueName”)。value;