GridView通过id asp.net获取数据

时间:2012-04-16 17:32:38

标签: c# asp.net select gridview

问题实际上是我可以通过gridview上的选择获取数据通过id,但是然后我使用我在页面上实现的搜索选项,gridview显示它获得的匹配结果但是如果我按下选择它将重定向到ID错误的页面,而不是获取我选择的ID的ID,它获取该单元格的第一个位置的字段的id。

以下是代码:

protected void Page_Load(object sender, EventArgs e)
    {

        TeamGest.DBLayer.DBLTeams dbl = new TeamGest.DBLayer.DBLTeams();
        GridView1.DataSource = dbl.List();
        GridView1.DataBind();

        TeamGest.DBLayer.DBLPlayers dbl1 = new TeamGest.DBLayer.DBLPlayers();
        GridView2.DataSource = dbl1.List();
        GridView2.DataBind();
    }

    protected void MyMenu_MenuItemClick(object sender, MenuEventArgs e)
    {
        {
            MyMultiView.ActiveViewIndex = Int32.Parse(e.Item.Value);
            int i;
            for (i = 0; i <= MyMenu.Items.Count - 1; i++)
            {
                if (i == Convert.ToInt32(e.Item.Value))
                {
                    MyMenu.Items[i].Text = MyMenu.Items[i].Text;
                }
                else
                {
                    MyMenu.Items[i].Text = MyMenu.Items[i].Text;
                }
            }
        }
    }

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow row = GridView1.SelectedRow;

        Response.Redirect("DetalhesClube.aspx?Id="+row.Cells[0].Text);

    }
    protected void Button1_Click1(object sender, EventArgs e)
    {
        string searchStringTeam = TextBox1.Text;
        GetTeamResults(searchStringTeam);
    }
    protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow row = GridView2.SelectedRow;
        Response.Redirect("DetalhesJogador.aspx?Id=" + row.Cells[0].Text);
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        string searchStringPlayer = TextBox2.Text;
        GetPlayerResults(searchStringPlayer);    
    }

1 个答案:

答案 0 :(得分:1)

不要使用单元格值。这就是DataKeys集合的用途:

<asp:GridView ID="GridView1" runat="server" DataKeyNames="ID, SomeOtherColumn" ...>

在代码隐藏中,你需要的只是行索引:

var rowIndex = 0;
var ID = (int)GridView1.Rows[rowIndex]["ID"];