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

790   3  

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 для навигации по строке запроса с индексом 0
DataNavigateUrlFields : поля для передачи в строке запроса. если вы хотите передать более 1 поля, разделите его запятыми.

Comments

    Ничего не найдено.