none
GridView RowUpdating的問題 RRS feed

  • 問題

  • 小弟我想要抓取使用者在GridView中所要更新的值

    然後將更新的值寫入SQL中

     

    我找了一些網站找到下面這段語法能夠抓取所要更新的值

    ((TextBox)GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text;

     

    我之前是將資料寫入XML檔案中

    上面這段語法就可以抓到要修改的值

    但是我換成將資料寫入到SQL的時候卻只會抓取到使用者尚未更新之前的值

    請各位高手幫幫忙

    感謝

     

    以下是我的程式碼

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            //抓取使用者修改的值
            string str_account, str_passwd, str_purview, str_name;
            str_account = ((TextBox)GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text;
            str_passwd = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
            str_purview = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
            str_name = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;

            
            //宣告SQL相關物件
            string updateCmd;
            string selectCmd = "Select * From passwd";
            SqlConnection conn;
            SqlDataAdapter myAdapter;
            SqlCommand cmd;
            DataSet ds = new DataSet();

            //設定SQL相關物件
            conn = new SqlConnection(sqldata.connStr);
            myAdapter = new SqlDataAdapter(selectCmd, conn);

     

            //將修改的資料寫入SQL中
            conn.Open();
            updateCmd = "UpDate passwd Set 帳號 = '" + str_account
                       + "', 密碼 = '" + str_passwd
                       + "', 權限 = '" + str_purview
                       + "', name = '" + str_name
                       + "' Where 帳號 = '" + str_account + "'";
            cmd = new SqlCommand(updateCmd, conn);
            cmd.ExecuteNonQuery();
            conn.Close();


            //取消編輯模式
            GridView1.EditIndex = -1;

            //重新顯示資料於GridView上
            myAdapter.Fill(ds, "passwd");
            GridView1.DataSource = ds;
            GridView1.DataBind();
        }

    2007年8月23日 上午 05:10

所有回覆

  • 你寫的Code有沒有去單步執行,我只要寫的Code,不管大小都會重復測試,你可以一行一行的追,看值的變化,並且去看資料庫的值正不正確,才知道去前端的問題還是資料庫的問題.

    你這個寫法是我很久以前的寫法,這裡有二點可以討論.

    1.你在Row_Updating 可能會抓到還沒變更的值,你可以在Row_Updated比較能抓到正確值,真實的作法我已經忘了,你有單步執行就知道了.

    2.你更新資料庫後馬上查詢,這會出現你已經開始更新資料庫,但還沒更新完就抓新資料,你要知道這期間執行是非同步的所以你要先Delay一下,比較能抓到正確的值.

     

    2007年8月23日 上午 09:52
  • 我有單步執行去追蹤

    可是我一直不知道問題出在哪邊

    就是一直抓不到修改的值

     

    我執行的時候按下修改之後都只會執行RowUpdating

    但是一直跳不到RowUpdated事件

     

    請大大在幫幫忙了

    感謝

    2007年8月24日 上午 06:22