C # Добавить HyperLinkColumn в GridView - PullRequest
1 голос
/ 28 ноября 2008

Я пытаюсь динамически добавить HyperLinkColumns в мой GridView. У меня есть следующий код:

HyperLinkColumn objHC = new HyperLinkColumn();
objHC.DataNavigateUrlField = "title";
objHC.DataTextField = "Link text";
objHC.DataNavigateUrlFormatString = "id, title";
objHC.DataTextFormatString = "{2}";

GridView1.Columns.Add(objHC);

Это не работает, так что ... как я могу добавить HyperLinkColumn в мой GridView?

Ответы [ 7 ]

5 голосов
/ 28 ноября 2008

Возможно, вы захотите добавить его, когда строка будет связана:

protected void yourGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
        HyperLink hlControl = new HyperLink();
        hlControl.Text = e.Row.Cells[2].Text; //Take back the text (let say you want it in cell of index 2)
        hlControl.NavigateUrl = "http://www.stackoverflow.com";
        e.Row.Cells[2].Controls.Add(hlControl);//index 2 for the example
}
1 голос
/ 15 ноября 2009

Я думаю, вы должны использовать HyperLinkField, а не HyperLinkColumn.

1 голос
/ 28 ноября 2008

Вы должны сделать это до того, как произойдет привязка данных, проверьте События GridView .

0 голосов
/ 16 декабря 2009

Я знаю, что эта ветка старая, но не могу не добавить свои 2 цента. Процедура, описанная в следующем уроке, отлично сработала для меня: ASP Alliance

0 голосов
/ 28 ноября 2008

Кстати, я просто думаю, что вы можете использовать DataGridView и в Designer выбрать столбец Link, и ваша проблема будет решена. DataGridView имеет столбец ссылок, чем вам просто нужно добавить событие «Клик», и вы сможете получить то, что вы хотите. Это решение работает, если вы можете переключиться на DataGridView.

0 голосов
/ 28 ноября 2008

В случае, если вы просто хотите перенаправить на другой URL, просто используйте веб-элемент управления HyperLink и вставьте его в нужную ячейку строки GridView при событии RowDataBound.
ИЛИ
Если вы хотите выполнить какое-либо серверное событие перед отправкой на другой URL, попробуйте это
1) Добавьте объект LinkButton в событие RowDataBound GridView.
2) Установите CommandName, свойство CommandArgument, если необходимо передать какие-либо данные этому объекту.
3) Захватите это событие, обработав событие RowCommand GridView.

0 голосов
/ 28 ноября 2008

Кажется, вы все перепутали. Я не знаю - как этот код компилируется?

Коллекция столбцов GridView может принимать столбцы типа «DataControlField». Я думаю, что вам нужно инициализировать HyperLinkField и установить соответствующие свойства (текст, NavigateUrl, HeaderText, Target) и добавить его в коллекцию столбцов.

Класс HyperLinkColumn имеет смысл при использовании DataGrid (не в случае GridView).

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

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