0

私はグリッドビューを持っています。

編集しようとしていますが、値が更新されていません。

私のコード:

 protected void Page_Load(object sender, EventArgs e)
        {

            con = new SqlConnection("Data Source=192.168.51.71;Initial Catalog=WebBasedNewSoft;User ID=sa;password=prabhu");

            BindGrid();
        }
        private void BindGrid()
        {
            try
            {
                da = new SqlDataAdapter("select * from emp", con);
                DataSet ds = new DataSet();
                da.Fill(ds);
                GridView1.DataSource = ds.Tables[0];
                GridView1.DataBind();
            }
            catch (Exception ex)
            {
            }
        }
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            int index = GridView1.EditIndex;

            GridViewRow row = GridView1.Rows[index];

            string eName = ((TextBox)row.Cells[2].Controls[0]).Text.ToString().Trim();

            try
            {
                con.Open();
                cmd = new SqlCommand("update emp set empName='" + eName + "'", con);
                cmd.ExecuteNonQuery();
                con.Close();
                BindGrid();
                GridView1.EditIndex = -1;
            }
            catch (Exception ex)
            {
            }
            finally
            {

            }

        }

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

間違えている箇所を教えてください。

4

2 に答える 2

3

イベントで次のようにBindGrid()内部で使用するPage.IsPostBackPage_Load

if(!Page.IsPostBack)
{
     BindGrid();
}

編集 1

次の行が機能するはずだと思います

   BindGrid();
   GridView1.EditIndex = -1;

動作していないため、catch ブロックにエラーがあるかどうかを確認してください。

  catch (Exception ex)
  {
       Response.Write(ex.Message);
  }

天気を見て、エラーがあるかどうか?

于 2013-07-05T05:42:15.200 に答える
2

このように試すことができます...編集ボタンをクリックすると、ページロードイベントが最初に呼び出されます....そして、ページロード時にグリッドビューを再度バインドします...再度バインドされたため、編集インデックスが失われます。 ..そして、編集インデックスを毎回-1に設定します...

 protected void Page_Load(object sender, EventArgs e)
        {
        if(!Page.IsPostBack)
              {
             con = new SqlConnection("Data Source=192.168.51.71;Initial            Catalog=WebBasedNewSoft;User ID=sa;password=prabhu");

            BindGrid();
        }
}

Edit1 : OP 更新後、編集モードは実行されません..以下のようにバインドする前に gridview Edit インデックスを設定する必要があります....

try
            {
                con.Open();
                cmd = new SqlCommand("update emp set empName='" + eName + "'", con);
                cmd.ExecuteNonQuery();
                con.Close();
                GridView1.EditIndex = -1;//Put this line Before the Binding of GridView
                BindGrid();

            }
于 2013-07-05T05:41:42.137 に答える