Как перенаправить из вида сетки с помощью DataKey - PullRequest
1 голос
/ 24 ноября 2011

Я хочу, чтобы представление сетки перенаправлялось при щелчке строки, поэтому у меня есть OnRowCreated для вида сетки, и я не могу перенаправить на нужную страницу

<asp:GridView ID="Grid_Messagetable" runat="server" OnRowCreated="Grid_Messagetable_RowCreated" AllowPaging="False" SelectedIndex="0"
                 DataKeyNames="MsgID" ShowHeaderWhenEmpty="true"
                OnRowDataBound="MyGrid_RowDataBound" AutoGenerateColumns="False" AllowSorting="true"
                OnSorting="gridView_Sorting" Height="16px" Width="647px">     protected void Grid_Messagetable_RowCreated(object sender, GridViewRowEventArgs e)
    {
        e.Row.Attributes.Add("onClick", "this.style.background='#eeff00'");
    }

Здесь я пыталсяустановить цвет фона, когда строка нажата, и это сработало, но как я могу перенаправить страницу, я должен перенаправить на страницу ResponseMetrci.aspx с msgID, как я делаю ниже.Поэтому я передаю сообщение в URL, чтобы получить его на странице метрики ответа.

Eval("MsgID", "ResponseMetric.aspx?MsgID={0}") %>'

Я пробовал это

e.Row.Attributes["onClick"] = "location.href=
 'ResponseMetric.aspx?MsgID=" + DataBinder.Eval(e.Row.DataItem, "MsgID") + "'";

, но я получаю ошибку ниже

Uncaught ReferenceError: redirect is not defined
(anonymous function)Messages.aspx:774
onclick

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

Простое исправление, просто измените ваш RowDataBound метод, который, как я вижу, вы уже внедрили, включает следующий фрагмент:

protected void MyGrid_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Attributes["onClick"] = string.Format(
            "window.location = 'ResponseMetric.aspx?MsgID={0}';",
            DataBinder.Eval(e.Row.DataItem, "MsgID"));
    }
}

Вот основной рабочий пример, который просто идет в Google:

protected void grdTest_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Attributes["onClick"] =
            "window.location = 'http://www.google.com/';";
    }
}
0 голосов
/ 24 ноября 2011

Вы можете открыть новое окно и закрыть существующее, если вам это нужно.Попробуйте это e.Row.Attributes.Add ("onClick", "javascript: window.open ('ResponseMetric.aspx? MsgID =" + your value + "')").

...