C# GridViews-сделать ячейки в одном столбце ссылка на другую страницу при нажатии
У меня есть сеточное представление, которое заполняется из базы данных.
Мне нужно сделать так, чтобы каждая из ячеек в определенном столбце при нажатии на ссылку переходила на вторую страницу и передавала текстовое значение ячейки в виде строки запроса (т. е. ссылка на http://mysite.com/page.aspx?CellText= "бла-бла-бла"). Звучит просто, я знаю, но я просто не могу понять это!
Вот как выглядит моя страница в данный момент:
<asp:GridView id="gdvTargets"
runat="server"
AutoGenerateEditButton="true"
OnRowEditing="gdvTargets_RowEdit"
OnRowUpdating="gdvTargets_RowUpdating"
OnRowUpdated="gdvTargets_RowUpdated"
OnRowCancelingEdit="gdvTargets_RowCancelingEdit"
cssClass="grid"
>
<HeaderStyle CssClass="GridHeader"></HeaderStyle>
И мой c# код позади это:
protected void Page_Load(object sender, EventArgs e)
{
year = Request.QueryString["YearSelector"];
targetType = Request.QueryString["TargetType"];
gdvTargets.DataSource = this.Ets.Api.Util.Db.GetDataTable("EXEC sp_getTargets " + year + ", " + targetType).Return;
gdvTargets.DataBind();
}
В результате получается таблица, которая выглядит примерно так:
ID System Target 1 Target 2 Target3 Target 4
0 ALL 10 20 15 10
2 Machine1 4 7 7 7
5 Xfgb 45 6 13 8 3
Я хотел бы, чтобы колонка system была кликабельной и переходила на новую страницу,но с именем системы. Надеюсь, это имеет смысл! Спасибо за вашу помощь: D
3 ответов:
Вы можете сделать следующее:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { e.Row.Cells[0].Text = "<a href=''>" + e.Row.Cells[0].Text + "</a>"; }Замените 0 индексом столбца
Используйте событие
OnRowCommand. В вашей разметке установитеTemplateFieldсLinkButton, а также установитеCommandNameиCommandArgumentsкнопки ссылки на необходимую информацию. То есть, вы можете назватьCommandName"ссылка" (или что угодно) иCommandArgumentидентификатор строки таблицы, или url-адрес страницы и т. д.Когда запускается событие команды строки, проверьте, какая это команда, и сделайте то, что вы хотите внутри этого.
public void gridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if(e.CommandName == "Link") { int key = int.Parse(e.CommandArgument.ToString()); Response.Redirect(string.Format( "http://mySite/index.aspx?id={0}", key)); } }
Добавьте
HyperLinkFieldк вашемуGridviewи задайте следующие свойства:<asp:HyperLinkField DataNavigateUrlFields="System" DataNavigateUrlFormatString="page.aspx?CellText={0}" DataTextField="System" />
DataTextField: Текст для отображения в столбцеDataNavigateUrlFormatString: Url для навигации по строке запроса с индексом 0DataNavigateUrlFields: поля для передачи в строке запроса. если вы хотите передать более 1 поля, разделите его запятыми.
Comments