2012-04-16 87 views
0

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

下面是代码:

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

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

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

而在代码隐藏所有你需要的是行索引:

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