Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
VKabanov
-4 / 5 / 1
Регистрация: 06.01.2014
Сообщений: 67
1

Как получить данные из источника данных GridView при нажатии кнопки в TemplateField

31.05.2014, 15:18. Просмотров 1718. Ответов 4
Метки нет (Все метки)

Уткнулся в мелочь...

Есть GridView, в нем TemplateField, а в нем Button (Все как у Кащея ).

По нажатию на кнопку, мне надо взять данные из источника данных и куда-то отпаравить... Не из GridView, а именно из его источника, т.к. в GridView они уже переработанные.

Вот кнопка в Template
C#
1
2
3
4
5
6
<ItemTemplate>
                        <asp:label id="DataSourceLabel"    wrap="true"  Text= '<%# Eval("DataSource") %>' runat="server" />
                        <asp:Button ID="FullButton" Visible="false" Text=" full " CssClass= "GridFullButton"
                                    CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
                                    onclick="FullButton_Click" runat="server" CommandName='Full' />                       
                    </itemtemplate>
а это обработчик ее нажатия
C#
1
2
3
4
5
6
7
8
9
10
11
        protected void MyGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Full")
            {  
                //получаю номер строки
                int index = Convert.ToInt32(e.CommandArgument);
 
                       ((TextBox)this.DataSourceTextPanel.FindControl("DataSourceTextBox")).Text =
                  ---->    (string)System.Web.UI.DataBinder.Eval(row.DataItem, "DataSource");
            }
       }
как в этой (----> ) части дотянуться до значения столбца "DataSource" источника данных MyGridView?
Зная, что номер выбранной строки index, а ключевое поле для выбора строки "SessionID".

Выбирать по index нельзя, т.к. работает разбиение на страницы.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2014, 15:18
Ответы с готовыми решениями:

Как при нажатии кнопки считать данные?
Есть пол. интерфейс.. сначала данные записываются в файл вызывается exe (на vs c++) там данные...

Как получить координаты курсора при нажатии любой кнопки мыши?
Неужели не кто не знает?

Как получить координаты курсора относительно формы при нажатии кнопки мыши?
Всем привет! Как получить координаты курсора относительно формы при нажатии кнопки мыши? То есть,...

Как сделать так, чтобы при нажатии кнопки Предосмотр форма отправляла данные в 'add.asp?action=preview' ?
... Есть форма с несколькими полями. И есть две кнопки - Предосмотр и Занести. Вопрос: как...

Как вывести данные из базы данных при нажатии на ссылку
В общем есть запрос, который выводит зарегистрированных пользователей из базы. Вот код: &lt;?...

4
HF
183 / 172 / 58
Регистрация: 09.09.2011
Сообщений: 644
Завершенные тесты: 19
31.05.2014, 21:03 2
Если у вас уже всё так усложняется, то зачем ещё усложнять себе дальнейшую работу? Определитесь что есть источник, узнайте какие связи с ним можно установить наверняка и наверняка поймёте как до него "дотянуться".

Вооооозможно, что я понимаю что именно вы хотите сделать, поэтому скажу что именно делаю я.
Например, есть табличка с именами и всякой информацией о них. Например, Иванов, Пётр, Сидорович, логиннейм, менеджер. Мы что-то должны делать с данными, например менять его логин или тип профессии. В базе данных этот Иванов имеет уникальный ID, который мы просто должны сообщать при добавлении данных в таблицу. Для этого добавляется последняя колонка "Действие" в которой "рисуем" кнопочку "Редактировать" со ссылкой на ID этого пользователя. Например,
HTML5
1
/Users.aspx?action=edit&id=23
И тогда после нажатия на такую ссылку вы будете знать что речь идёт об ID 23, источником является база данных, а не какие то переработанные данные из страницы (которые к тому же могут быть изменены хакером или типа того).

Конечно же я описал самый простой подход. Методов и привязок много.
0
VKabanov
-4 / 5 / 1
Регистрация: 06.01.2014
Сообщений: 67
31.05.2014, 21:22  [ТС] 3
HF, HF, Нет Дима, немного не так. Есть в гриде TemplateField DataSource.
Данные берутся из SqlDataSource и обрезается для удобного отображения (в DataSourceLabel), т.к. отражать надо грид с несколькими записями, а только одно єто поле может содержать несколько МБ информации.

Для пользователя которому надо посмотреть вcе поле целиком есть кнопка FullButton, при нажатии на которую активизируется соответствующая панель и в RowCommand получается номер строки в которой прошло нажатие.

Теперь вопрос, как зная номер строки, получить полное значение поля. Не усеченное из DataSourceLabel, а то, которое бралось из SqlDataSource?

Добавлено через 2 минуты
В том то и дело, я что я не хочу добавлять кнопку для все строк. Я добавляю кнопу только туда, где єто может понадобиться.
0
HF
183 / 172 / 58
Регистрация: 09.09.2011
Сообщений: 644
Завершенные тесты: 19
31.05.2014, 22:03 4
Цитата Сообщение от VKabanov Посмотреть сообщение
В том то и дело, я что я не хочу добавлять кнопку для все строк. Я добавляю кнопу только туда, где єто может понадобиться.
Вам нужно иметь источник для связи Номера строки и Номера строки в реальном источнике данных. Или в каждой строке нужно иметь объект с ID строки источника, чтобы тыкнув туда, он прочитал это значение и показал нужный результат из источника.
Поймите что в программировании нет волшебства - "Тыкнул в первое попавшееся а оно вывело мне то что надо". За волшебством стоят всякие хитрости. Чем больше у вас опыта в программировании, тем больше возможностей вы имеете в реализации подобных хитростей.

Добавлено через 1 минуту
Кстати вот тема с аналогичной задачей.
Значение из SqlDataSource в переменную
связка источника и кнопки
0
VKabanov
-4 / 5 / 1
Регистрация: 06.01.2014
Сообщений: 67
01.06.2014, 00:22  [ТС] 5
HF, так у меня есть в GridView столбец SessionID.

Просто на тот момент, когда я отлавливаю в RowCommand нажатие с параметром e.CommandArgument равным номеру строки в GridView, сформированный для заполнения GridView DataSet уже пустой. Он как выяснилось живет только на момент RowDataBound...

Добавлено через 36 минут
Решил проблему. Решение простое, но процесс его поиска основательно укрепил теоретическую базу.

1) Кнопки создаются в ASPX c Visible="false" и CommandArgument="Zero"
2) В RowDataBound когда принимаю по анализу ячейки решение об отображении кнопки делаю так:
C#
1
DataSourceFullButton.CommandArgument = System.Web.UI.DataBinder.Eval(e.Row.DataItem, "SessionID").ToString();
3) В RowCommand определяю сработавшую кнопку
C#
1
int SessionID = Convert.ToInt32(e.CommandArgument);
4) Далее, DataSourceTextBox находящийся в в информационной панели, заполняется следующим образом:
C#
1
2
3
4
5
6
7
8
9
        String SelectCommand = String.Concat("SELECT DataSource FROM SessionSheet WHERE SessionID=",
                                             SessionID.ToString());
        this.FullViewSqlDataSource.SelectCommand = SelectCommand;
 
        DataView dv = (DataView)FullViewSqlDataSource.Select(System.Web.UI.DataSourceSelectArguments.Empty);
        String FullDataSourceString = (String)dv.Table.Rows[0][0];
 
        DataSourceTextBox = (TextBox)this.DataSourceTextPanel.FindControl("DataSourceTextBox");
        DataSourceTextBox.Text = FullDataSourceString;
0
01.06.2014, 00:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 00:22

Получить шрифт при нажатии кнопки
мне нужно кнопка чтоб как получить шрифт? не работа кнопка ок, получить шрифт ...

Как сделать, чтобы при нажатии кнопки в программе на Lazarus изменялась база данных Mysql
Помогите

Передать данные в input при нажатии кнопки
Подскажите, есть ф-ция, как мне сделать так, что при нажатии на кнопку в несколько инпутов...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru