2

ユーザーが必要な行を「選択」して、データベースを通過してリダイレクトできるように、グリッドビューを設定しました。ただし、結果の特定の行で「選択」をクリックすると、次の行で「入力文字列の形式が正しくありませんでした」というエラーが表示されます。この部分を取り出したところ、Convert が含まれるすべての行でエラーが発生しました。したがって、正しく書かれていないことはわかっていますが、どのように書くべきかわかりません。どんな助けでも素晴らしいでしょう!

申し訳ありませんが、私はこれが初めてです!

girdview の私のコード:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Event myEvent = new Event();
        GridViewRow row = GridView1.SelectedRow;
        myEvent.EventID = Convert.ToInt32(row.Cells[0].Text);
        myEvent.Sport = row.Cells[1].Text;
        myEvent.EventName = row.Cells[2].Text;
        myEvent.Section = Convert.ToInt32(row.Cells[3].Text);
        myEvent.TicketsAvailable = Convert.ToInt32(row.Cells[4].Text);
        myEvent.EventDate = Convert.ToDateTime(row.Cells[5].Text);
        Session["myEvent"] = myEvent;

        Response.Redirect("Complete.aspx");
    }

イベント用の私のコードも必要な場合に備えて:

public class Event
{
    public int EventID { get; set; }
    public string EventName { get; set; }
    public string Sport { get; set; }
    public int Section { get; set; }
    public int TicketsAvailable { get; set; }
    public DateTime EventDate { get; set; }
}
4

1 に答える 1

0

変換している値がnullでないことを確認してください。コードをデバッグして、その特定の行から取得している値を確認してください。

もう1つのことは、グリッドビューで生成された選択ボタンを作成した場合、その選択ボタンの位置はグリッドビューの0セルです。このようにコードを試すことができます。

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Event myEvent = new Event();
        GridViewRow row = GridView1.SelectedRow;
        myEvent.EventID = Convert.ToInt32(row.Cells[1].Text);
        myEvent.Sport = row.Cells[2].Text;
        myEvent.EventName = row.Cells[3].Text;
        myEvent.Section = Convert.ToInt32(row.Cells[4].Text);
        myEvent.TicketsAvailable = Convert.ToInt32(row.Cells[5].Text);
        myEvent.EventDate = Convert.ToDateTime(row.Cells[6].Text);
        Session["myEvent"] = myEvent;

        Response.Redirect("Complete.aspx");
    }
于 2012-12-09T06:11:10.407 に答える