Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
87 / 30 / 19
Регистрация: 16.01.2015
Сообщений: 250

Получить текст из ячейки выделенной строки

14.07.2015, 10:42. Показов 7200. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица. По нажатию на строку (RowClick) должен получить значение определенной ячейки в этой строке (LINK).
Подскажите пожалуйста как нужно написать.
JavaScript
1
2
3
4
     function Grid_RowClick(s, e) {
            console.log(e)
            grid.GetRowValues(e.visibleIndex,'LINK')
        }
Но так не правильно, так я обращаюсь к базе и от туда беру текст ячейки в выделенной строке, а мне нужно прям из таблицы, не обращаясь на сервер.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.07.2015, 10:42
Ответы с готовыми решениями:

Как получить содержимое первой ячейки строки по которой кликнули?
Как получить содержимое первой ячейки строки по которой кликнули? Собственно таким кодом получаю все содержимое а надо только значение в...

Как получить значение ячейки выделенной строки DataGridView?
Как получить значение ячейки выделенной строки DataGridView? Индекс столбца известен.

Получить текст выделенной строки в listview
Подскажите пожалуйста, как получить текст выделенной строки в listview? Заранее спасибо!!!

12
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
14.07.2015, 10:58
а поподробнее можно -- как вы собираетесь "нажать" на строку, чтобы её "выделить", и как, в вашем понимании, строки "выделяются" ?

и что такое LINK для "определённой ячейки" -- это её id или её имя класса, или что-то ещё ?
0
87 / 30 / 19
Регистрация: 16.01.2015
Сообщений: 250
14.07.2015, 12:24  [ТС]
У GridView свойство AllowSelectByRowClick="true" так я могу выделять/нажимать на строку в таблице. (Я использую компоненты компании DevExpress для VisualStudio. Там больше возможностей, чем у обычных, стандартных.)
Вот табличка
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            <dx:ASPxGridView ID="tlJournal" ClientSideEvents-ColumnMoving="false" runat="server" ClientInstanceName="grid" AutoGenerateColumns="False"
                EnableTheming="True" Theme="Office2010Blue" KeyFieldName="NUM;" Width="100%">
                <Columns>
                    <dx:GridViewDataTextColumn Caption="Дата утверждения" Name="tlJournalDATE" VisibleIndex="1" FieldName="DATA_SIGN" Width="128">
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn Caption="Версия" Name="tlJournalDATE" Width="55" VisibleIndex="6" FieldName="REVISION">
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn Caption="Штрих-код" Name="tlJournalDATE" VisibleIndex="9" FieldName="BARCODE" Width="120">
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn Caption="Ссылка" Name="tlJournalDATE" VisibleIndex="9" FieldName="LINK" Width="0">
                    </dx:GridViewDataTextColumn>
                </Columns>
                <Settings ShowFilterRow="true" VerticalScrollBarMode="Visible" VerticalScrollableHeight="0" />
                <SettingsBehavior AllowFocusedRow="false" AllowSelectByRowClick="true" EnableRowHotTrack="true"/>
                <SettingsPager Mode="EndlessPaging" PageSize="40" />
                <ClientSideEvents Init="OnInit" EndCallback="OnEndCallback" RowClick="Grid_RowClick"/>
            </dx:ASPxGridView>
Ну и скриншотик:
И раньше я делал так: По нажатию на строку у меня в новом окне открывается ссылка, делал при помощи JS запрос в базу, там я получал значение из столбца LINK(там ссылка).
JavaScript
1
2
3
4
function Grid_RowClick(s, e) {
            console.log(e)
            grid.GetRowValues(e.visibleIndex,'LINK', OnGetRowValues)            
        }
Получал ссылку и открывал её в новой вкладке
JavaScript
1
2
3
function OnGetRowValues(Value) {
            window.open(Value);
        }
Но так очень долго работает. Пока из таблицы отправится запрос на сервер, получит ссылку, потом откроет её в новом окне, загрузит..И решил сделать как показалось проще-теперь я загружаю столбец с ссылками вместе со всеми столбцами в таблицу Grid, только я его скрываю через CSS, чтобы не видно было и хочу через JS получать из этого столбца значение, эту ссылку. Чтобы сразу можно было открывать её в новом окне без всяких запросов.
0
87 / 30 / 19
Регистрация: 16.01.2015
Сообщений: 250
15.07.2015, 14:43  [ТС]
Думал как-то так
JavaScript
1
2
3
function Grid_RowClick(Value) {
            grid.GetRowValues(document.getElementsByName('tlJournalLink')[0].values)
        }
Но так не правильно, получаю ошибку "TypeError: document.getElementsByName(...)[0] is undefined"

Добавлено через 5 часов 10 минут
Сказали нужно через JSON, парсить и тогда можно будет брать нужное значение из ячейки. Как это сделать?

Добавлено через 2 часа 13 минут
Может по классу можно сделать поиск? В Firebug-е посмотрел, там отличаются class у столбцов:
HTML5
1
2
3
4
5
<td class="dxgv">10.07.2015 14:48:28</td>
<td class="dxgv">11.03.15.</td>
<td class="dxgv">a.6</td>
<td class="dxgv">*KVM0001218758*</td>
<td class="hidden dxgv">http://index.aspx?id=7189682&stage=0</td>
У нужного мне столбца class="hidden dxgv". Так вот, может по нему можно вытащить из ячейки выделенной строки текст?
0
123 / 62 / 32
Регистрация: 10.01.2014
Сообщений: 241
15.07.2015, 15:40
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  <table>
      <tr>
          <td class="dxgv">10.07.2015 14:48:28</td>
          <td class="dxgv">11.03.15.</td>
          <td class="dxgv">a.6</td>
          <td class="dxgv">*KVM0001218758*</td>
          <td class="hidden dxgv">http://index.aspx?id=7189682&stage=0</td>
      <tr>
  </table>
  
 
  <script>
      var elem = document.querySelector("td[class^='hidden']");
      console.log(elem);
</script>
а что не получается то ?
1
87 / 30 / 19
Регистрация: 16.01.2015
Сообщений: 250
16.07.2015, 07:50  [ТС]
scio me nescire, Спасибо. Хоть какое-то продвижение уже) Так берёт всегда из 1-й строки. А как сделать, чтобы выбиралось значение из выделенной строки(на которую нажмут)?

Добавлено через 15 минут
JavaScript
1
2
3
4
5
6
7
function Grid_RowClick(s, e) {
            console.log(e)
            grid.GetRowValues(document.querySelector("td[class^='hidden']",OnGetRowValues) 
        }
function OnGetRowValues(Value) {
            window.open(Value);
        }
Но внутри скобок нельзя написать document..Ну-можно, но работать не будет.
0
123 / 62 / 32
Регистрация: 10.01.2014
Сообщений: 241
16.07.2015, 17:44
Hikaru,
HTML5
1
2
3
4
5
6
7
8
9
<div>
    <table id="tableId" border=1>
      <tbody>
        <tr><td>Item one</td></tr>
        <tr><td>Item two</td></tr>
        <tr><td>Item three</td></tr>
      </tbody>
    </table>
</div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function addRowHandlers() {
    var table = document.getElementById("tableId");
    var rows = table.getElementsByTagName("tr");
    for (i = 0; i < rows.length; i++) {
        var currentRow = table.rows[i];
        var createClickHandler = 
            function(row) 
            {
                return function() { 
                                        var cell = row.getElementsByTagName("td")[0];
                                        var id = cell.innerHTML;
 
                                        // тут можно проверить наличие класса hidden
                                        var clsNames = cell.className;
 
 
                                        alert("id:" + id + "\n" + clsNames);
                                 };
            };
 
        currentRow.onclick = createClickHandler(currentRow);
    }
}
window.onload = addRowHandlers();
1
87 / 30 / 19
Регистрация: 16.01.2015
Сообщений: 250
17.07.2015, 07:21  [ТС]
scio me nescire, Кажется то, что нужно. Но подчеркивает
JavaScript
1
var rows = table.getElementsByTagName("tr");
Пишет Table is null. Я и id вставлял, и клиентское имя и table. В Вашем примере тоже самое пишет.
0
123 / 62 / 32
Регистрация: 10.01.2014
Сообщений: 241
17.07.2015, 13:01
Hikaru,
Таблицы в переменной table почему то нету, как ваш html выглядит ?
У меня по клику все работает, можете попробовать getElementsByTagName("td");
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
    <body>
        
        <div>
            <table id="tableId" border=1>
                <tbody>
                    <td class="dxgv">10.07.2015 14:48:28</td>
                    <td class="dxgv">11.03.15.</td>
                    <td class="dxgv">a.6</td>
                    <td class="dxgv">*KVM0001218758*</td>
                    <td class="hidden dxgv">http://index.aspx?id=7189682&stage=0</td>
                    <td class="hidden dxgv">test new hidden td</td>
                </tbody>
            </table>
        </div>
        <script src="index.js"></script>
    </body>
</html>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function addRowHandlers() {
    var td = document.getElementsByTagName("td");
        for (var i = 0; i < td.length; i++) {
 
            var current = td[i];
            console.log(current);
 
            var createClickHandler = 
                function(row) 
                {
                    var clsNames = row.className.split(' ');
 
                    // Проверка на наличие класса hidden
                    if(clsNames.indexOf('hidden') > -1){
 
                    return function() { 
                            var id = row.innerHTML;
 
                            var clsNames = row.className;
 
 
                            console.log("text: " + id + "\n" + 'class list: ' + clsNames);
                     };
                };
                    }
           current.onclick = createClickHandler(current);
        };
 
}
window.onload = addRowHandlers();
1
123 / 62 / 32
Регистрация: 10.01.2014
Сообщений: 241
17.07.2015, 13:33
Лучший ответ Сообщение было отмечено Hikaru как решение

Решение

Hikaru,
упс, кажется я только сейчас понял, что вам нужно.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<html>
    <body>
        
        <div>
            <table id="tableId" border=1>
                <tbody>
                    <tr>
                        <td class="dxgv">10.07.2015 14:48:28</td>
                        <td class="dxgv">11.03.15.</td>
                        <td class="dxgv">a.6</td>
                        <td class="dxgv">*KVM0001218758*</td>
                        <td class="hidden dxgv">http://index.aspx?id=7189682&stage=0</td>
                    </tr>
                    <tr>
                        <td class="dxgv">10.07.2015 14:48:28</td>
                        <td class="dxgv">11.03.15.</td>
                        <td class="dxgv">a.6</td>
                        <td class="dxgv">*KVM0001218758*</td>
                        <td class="hidden dxgv">http://index.aspx?id=7189682&stage=1</td>
                    </tr>
                    <tr>
                        <td class="dxgv">10.07.2015 14:48:28</td>
                        <td class="dxgv">11.03.15.</td>
                        <td class="dxgv">a.6</td>
                        <td class="dxgv">*KVM0001218758*</td>
                        <td class="hidden">http://index.aspx?id=7189682&stage=2</td>
                    </tr>
                </tbody>
            </table>
        </div>
        <script src="index.js"></script>
    </body>
</html>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
var elems = document.getElementsByTagName('tr');
for (var i = 0; i < elems.length; i++) {
    elems[i].onclick = function (e) {
        e = e || event;
        var currentTr = e.target.parentNode;
        var hiddenTd = currentTr.getElementsByClassName('hidden')[0];
 
        var hiddenLink = hiddenTd.innerHTML;
        console.log(hiddenLink);
    }
};
1
87 / 30 / 19
Регистрация: 16.01.2015
Сообщений: 250
17.07.2015, 13:50  [ТС]
scio me nescire,
Так выглядит код в Visual Studio
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
            <dx:ASPxGridView ID="tlJournal" ClientSideEvents-ColumnMoving="false" runat="server" ClientInstanceName="grid" AutoGenerateColumns="False"
                EnableTheming="True" Theme="Office2010Blue" KeyFieldName="NUM;" Width="100%">
                <Columns>
                    <dx:GridViewDataTextColumn Caption="Дата утверждения" Name="tlJournalDATE" VisibleIndex="1" FieldName="DATA_SIGN" Width="128">
                        <Settings AutoFilterCondition="Contains" />
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn Caption="Версия" Name="tlJournalDATE" Width="55" VisibleIndex="6" FieldName="REVISION">
                        <Settings AutoFilterCondition="Contains" />
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn Caption="Штрих-код" Name="tlJournalDATE" VisibleIndex="9" FieldName="BARCODE" Width="120">
                        <Settings AutoFilterCondition="Contains" />
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn Caption="Ссылка" Name="tlJournalLink" VisibleIndex="9" FieldName="LINK" Width="0">
                        <Settings AutoFilterCondition="Contains" />
                        <HeaderStyle CssClass="hidden" />
                        <CellStyle CssClass="hidden"></CellStyle>
                    </dx:GridViewDataTextColumn>
                </Columns>
                <Settings ShowFilterRow="true" VerticalScrollBarMode="Visible" VerticalScrollableHeight="0" />
                <SettingsBehavior AllowFocusedRow="false" AllowSelectByRowClick="true" EnableRowHotTrack="true" />
                <SettingsPager Mode="EndlessPaging" PageSize="40" />
                <ClientSideEvents Init="OnInit" EndCallback="OnEndCallback" RowClick="Grid_RowClick" />
            </dx:ASPxGridView>
А так на странице web уже
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<table id="tlJournal" class="dxgvControl_Office2010Blue" cellspacing="0" cellpadding="0" style="width: 1438px; border-collapse: separate;">
    <tbody>
        <tr>
            <td>
                <div class="dxgvHSDC" style="padding-right: 17px;">
                    <div class="dxgvCSD" align="left" style="height: 707.7px; overflow-x: hidden; overflow-y: scroll; width: 1438px;">
                        <table id="tlJournal_DXMainTable" class="dxgvTable_Office2010Blue" cellspacing="0" cellpadding="0" style="width: 100%; border-collapse: collapse; empty-cells: show; table-layout: fixed; overflow: hidden;" onclick="aspxGVTableClick('tlJournal', event);">
                            <tbody>
                                <tr>
                                    <td style="width: 128px;"></td>
                                    <td style="width: 55px;"></td>
                                    <td style="width: 120px;"></td>
                                    <td style="width: 0px;"></td>
                                </tr>
                                <tr id="tlJournal_DXDataRow0" class="dxgvDataRow_Office2010Blue">
                                    <td class="dxgv">17.07.2015 14:28:16</td>
                                    <td class="dxgv">a.0</td>
                                    <td class="dxgv">*KVM0001223842*</td>
                                    <td class="hidden dxgv">http://app05.sztm.local/vedomost/index.aspx?id=7211399&stage=0</td>
                                </tr>
                            </tbody>
                        </table>
                        <div id="tlJournal_DXEPLPC"></div>
                    </div>
                    
            </td>
        </tr>
    </tbody>
</table>
0
123 / 62 / 32
Регистрация: 10.01.2014
Сообщений: 241
17.07.2015, 14:01
Лучший ответ Сообщение было отмечено Hikaru как решение

Решение

Hikaru,
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// id нужной таблицы
var table = document.getElementById('tlJournal_DXMainTable');
var elems = table.getElementsByTagName('tr');
 
for (var i = 0; i < elems.length; i++) {
    elems[i].onclick = function (e) {
        e = e || event;
        var currentTr = e.target.parentNode;
        var hiddenTd = currentTr.getElementsByClassName('hidden')[0];
 
        var hiddenLink = hiddenTd.innerHTML;
        console.log(hiddenLink);
    }
};
1
87 / 30 / 19
Регистрация: 16.01.2015
Сообщений: 250
17.07.2015, 14:23  [ТС]
scio me nescire, Огромнейшее спасибо. Всё получилось
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.07.2015, 14:23
Помогаю со студенческими работами здесь

Получить значение выделенной ячейки DataGridView
Есть datagridview состоящий из одного столбца как вытащить содержимое выделенной ячейки???

Как получить имя столбца выделенной ячейки?
Привет всем!!! Подскажите как мне получить имя столбца выделенной ячейки? Допустим у меня выделена ячейка В2, мне нужно получить имя...

Как получить значение выделенной ячейки в DataGrid
Как получить значение выделенной ячейки в DataGrid?

Получить координаты первой (левой верхней) выделенной ячейки
Добрый день, есть ячейки со значениями в одной строке, надо их совместить в первую ячейку. Вопрос - как получить координаты первой (левой...

Получить значение ячейки, находящейся на заданном расстоянии от выделенной
Дорогие друзья! Подскажите можно написать следующий макрос в Эксель. Задача следующая: есть цифровые данные размещены по столбцам....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru