Значение ячейки Gridview в RowCommand - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь получить значение ячейки из таблицы, но сталкиваюсь с несколькими проблемами.Я настроил свой код, подобный этому примеру , за исключением того, что я добавляю свои поля кнопок на стороне сервера.Почему RowCommand запускается дважды при щелчке значений в ячейке?TIA для любой помощи

Загрузка страницы пуста: code

 protected void Page_Load(object sender, EventArgs e)
{

}

Поле добавления кнопки: code

   foreach (DataColumn col in transposedTable.Columns)
    {

        ButtonField bfield = new ButtonField();



        bfield.DataTextField = col.ColumnName;

        bfield.HeaderText = col.ColumnName;

        bfield.CommandName = "ColumnClick";

        gvTest.Columns.Add(bfield);

    }

События RowDataBound и RowCommand являютсятак же, как пример ссылки выше

Ответы [ 3 ]

1 голос
/ 29 марта 2012

ок ... Похоже, что в MSFT connect есть открытая ошибка ... GridView RowCommad Запуск событий дважды

похоже, что есть некоторые обходные пути, опубликованные на вкладке Временные решения ....

Надеюсь, это поможет ...

1 голос
/ 29 мая 2012

Это известная ошибка.У меня была та же проблема.

Я удалил дескрипторы GridView.RowCommand из кода, описывающего объявление события, и добавил эту строку в объявление свойств для сетки в источнике .aspx:

OnRowCommand="GridView_RowCommand"

отлично сработало.

0 голосов
/ 28 марта 2012

Один из способов получить доступ к значениям строк в сетке - это использовать коллекцию Cells вместе с текущим индексом сетки (доступ к которому можно получить с помощью событий), как показано ниже.

void YOUR_GRID_EVENT(Object sender, GridViewDeleteEventArgs e) 
{
    Grid.Rows[e.RowIndex].Cells[0];
}

, вы также можете использоватьиз findcontrol, как показано ниже:

var txtName = e.Row.FindControl("txtName") as TextBox;

Надеюсь, это поможет ...

Обновление

Также проверьте свой код, чтобы убедиться, что вывызывающий метод DataBind () GridView надлежащим образом ... потому что каждый раз, когда вы вызываете GridView.DataBind () ... вызывается событие rowcommand представления сетки ... Я думаю (догадываясь), что у вас в настоящее время есть gridView.DataBind ()в вашей загрузке, а также в событии нажатия кнопки .. так что это может привести к тому, что событие rowcommand будет вызвано дважды ... если это не так, то опубликуйте некоторый код, чтобы мы могли изучить больше ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...