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;
}