1

只想问是否可以复制网格中行的第一个值?例如。我有两列。A值和B值是。如果我在第一行的 B 列中输入任何值。它应该填充所有剩余的行。

**Serial**   **CartNum**   Output **CartNum**
    1             1                    1
    2                                  1
    3                                  1
    4                                  1

这可能吗?我认为我正在使用 ASP.NET(VB)、javascript 吗?

这是我的网格代码。

<div class="Scrolls">
  <asp:DataGrid runat="server" ID="dgSerial" AutoGenerateColumns="false" ShowFooter="false" ShowHeader="false" GridLines="None" DataKeyField="BaseLineNum" AlternatingItemStyle-CssClass="AlternateGrid">
    <Columns>
      <asp:TemplateColumn>
        <ItemTemplate>
          <table border="0" style="border-bottom: 1px dotted; border-color: #FF0000">
            <tr>
              <td style="width: 20px;">
                <asp:CheckBox runat="server" ID="chkSelect"></asp:CheckBox>
              </td>
              <td style="width: 120px;">
                <asp:TextBox Width="120" ID="SerialNum" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "SerialNum")%>' />
              </td>
              <td style="width: 120px;">
                <asp:TextBox Width="120" ID="CartNum" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "CartNum")%>' />
              </td>
            </tr>
          </table>
        </ItemTemplate>
      </asp:TemplateColumn>
    </Columns>
  </asp:DataGrid>
</div>

希望听到积极的回应。

4

2 回答 2

0

您必须按上述方式编辑第二行模板:

<asp:TextBox Width="120" ID="CartNum" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "CartNum")%>'
  onchange="javascript: copy();" CssClass="row2"/>

然后添加 Javascript 魔法:

<script type="text/javascript">
  function copy() {
    var cells = document.getElementsByClassName("row2");
    for(var i = 1; i < cells.length; i++)
      cells[i].value = cells[0].value;
  }
</script>

我现在无法对此进行测试,所以我不确定它是否会正常工作,但我相信它会进行一些修改。

请注意,javascript 代码始终从列的第一个单元格(单元格 [0])中获取值,因为您的问题正是您所要求的。

于 2013-08-09T10:53:55.740 回答
0

试试这个,它会帮助你

<script type="text/javascript">
function copy(){
    var inputCount = document.getElementById('tableId').getElementsByTagName('input').length;
    var name = document.getElementById('name').value;
    for(i=1;i<=inputCount;i++){
    document.getElementById('name_'+i).value = name;
    }
}
</script>
<table id="tableId">
<tr>
<td>
    <input type="text" id="name" onkeyup="copy();" name="name" />
    <input type="text" id="name_1" name="name_1" />
    <input type="text" id="name_2" name="name_2" />
    <input type="text" id="name_3" name="name_3" />
    <input type="text" id="name_4" name="name_4" />
</td>
</tr>
</table>
于 2013-08-09T10:10:23.737 回答