2013-08-09 2 views
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> 

Надежды услышать положительный отклик.

+0

Конечно, это можно скопировать значение в другое место. Но я не понимаю вашу точку зрения ... можете ли вы попытаться объяснить себя немного лучше? – adripanico

+0

какая это? вы используете таблицу HTML? –

+1

Думаю, дело в том, что если он набирает '1' в row1, columnB, он хочет скопировать это значение в оставшиеся строки столбца B. (Сторона клиента) ! – zey

ответ

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> 

I Я не могу проверить это прямо сейчас, поэтому я не уверен, что он будет работать нормально, но я уверен, что это будет с несколькими модификациями нс.

Обратите внимание, что код javascript всегда принимает значение из первой ячейки столбца (ячейки [0]), из-за вашего вопроса, о котором вы просили.

+0

Привет adripanico, у меня ошибка «0x800a01b6 - Ошибка выполнения JavaScript: объект не поддерживает свойство или метод getElementsByClassName» –

+0

Вы уверены, что пишете 'getElementsByClassName', а не' getElementByClassName'? – adripanico

+0

вы должны использовать событие onkeyup. для этого. –

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> 
+0

Это хороший подход, но из-за того, что у вас есть несколько строк, вам нужно будет использовать другой способ для получения элементов, например, с помощью getElementByClass. Вам также понадобится использовать цикл foreach. – adripanico

+0

Да, конечно. Нам это нужно по классу или с использованием цикла. –

+0

Спасибо за это. Но как я могу применить это в своей сетке? –

Смежные вопросы