0

問題は、グリッドビューの選択を介して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);    
    }
4

1 に答える 1

1

セル値を使用しないでください。それが DataKeys コレクションの目的です。

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

コード ビハインドで必要なのは行インデックスだけです。

var rowIndex = 0;
var ID = (int)GridView1.Rows[rowIndex]["ID"];
于 2012-04-16T18:05:54.093 に答える