1

ASP.Net の学習を始めたばかりです。昨夜、データベースに直接コマンドを与えることでデータを埋めるグリッドビューに取り組んでいました。グリッドのテンプレート フィールドを定義しておらず、AutoGenerated 編集ボタンを true に設定しています。データは正しく表示されていますが、更新イベントを処理しようとしているときに、更新中の行のセル値を取得できないため、問題に直面しています。

私はよくグーグルで調べましたが、セル値を取得するためのすべての例はテンプレート フィールドに基づいていますが、私の場合、設計時にグリッドの列を定義していません。私を助けてください。

私のコードは以下のとおりです:(ブレークポイントを適用してチェックすると、GridView1_RowUpdatingメソッドは空の値を与えています)

  private void FillGrid()
        {
            SqlConnection con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=TestDatabase;Integrated security=true;");
            DataTable dt = new DataTable("Student");
            using (SqlDataAdapter adapter = new SqlDataAdapter("select name,age,Fathername,dob from student", con))
            {
                adapter.Fill(dt);
            }
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            FillGrid();
        }

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //Response.Write("RowDataBoundEvent Occured"+" "+e.Row.RowType+"\n");
        }

        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            FillGrid();
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            FillGrid();
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {

            string name = GridView1.Rows[e.RowIndex].Cells[2].Text;
            string age = GridView1.Rows[GridView1.EditIndex].Cells[3].Text;
            string salary = GridView1.Rows[GridView1.EditIndex].Cells[4].Text;
        }
4

1 に答える 1

0

GridViewUpdateEventArgs.OldValues と GridViewUpdateEventArgs.NewValues を確認してください。

 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
 {
    string name = e.NewValues[2];
    string age = e.NewValues[3];
    string salary = e.NewValues[4];
 }
于 2012-06-24T20:40:44.217 に答える