1

グリッド ビューで [更新] をクリックすると、コードが正常に機能します。しかし、別の Web ページでデータを取得すると、更新した列が空白になります。なぜこれが起こるのか分かりません。更新と表示の両方のコードを次に示します。これは更新用です。

 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
         string v =     System.Configuration.ConfigurationManager.ConnectionStrings["harish"].ConnectionString;
         con = new OracleConnection(v);
         con.Open();

         string query = "update leave_module1 set name='"+GridView1.Rows[e.RowIndex].Cells[0].Text+"'";
         OracleCommand cmd = new OracleCommand(query, con);
         cmd.ExecuteNonQuery();
         ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('The Data has been added');</script>;");
         GridView1.EditIndex = -1;
         con.Close();    
}

そしてこれは loadgrid()

   protected void loadgrid()
{

     string v = System.Configuration.ConfigurationManager.ConnectionStrings["harish"].ConnectionString;
        con = new OracleConnection(v);
        con.Open(); 
        cmd = new OracleCommand("select *  from leave_module1 where '"+TextBox1.Text+"' between fd and td", con);
        dr = cmd.ExecuteReader();

        GridView1.DataSource=dr;
        GridView1.DataBind();
        con.Close();
        dr.Close();

}
4

4 に答える 4

0

ページがポストバックされると、フラッシュされたグリッドビューの値が返されます。Gridviewで値を保持したい場合は、以降の操作のためにこれらの値をViewstateに入れる必要があります。ポストバックの前にViewstateにGridview値を追加するには、Viewstate.add()を使用する必要があります。viewstate.add( "key"、value);

お役に立てば幸いです。

于 2012-06-25T08:09:22.907 に答える
0

whereの句について言及していませんupdate query。クエリは次のようにする必要があります

Update tableName set ColumnName = 'Value'
where IDcolumn = 1

次に、このアプローチの代わりにストアド プロシージャに取り組む必要があります。

空白の列レコードは、コード ( GridView1.Rows[e.RowIndex].Cells[0].Text) が空白のデータを提供しているためである必要があります。実行時にデバッグしてその値を監視することで確認する必要があります。

于 2012-06-13T10:11:24.127 に答える
0

update ステートメントにはwhere句がないため、テーブル内のすべての行が更新されます。それはあなたが望むものかもしれませんし、そうでないかもしれません。

あなたのselectステートメントにも構文上の欠陥がある可能性があります。と呼ばれる列の値と とTextBox1.Text呼ばれる列の値の間の値を含む、の値の名前を持つ列がある行のみが正常に返されます。fdtd

于 2012-06-13T10:13:06.210 に答える
0

これらは、私が役立つと思われる解決策または解決策全体の一部である可能性があります。

  • グリッドが変更を失い、通常のビューに戻るため、loadgrid() が row_updating イベントの前に呼び出されていないことを確認してください。
  • また、このリンクから n を確認してください: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowupdating.aspx
  • SQLクエリまたは接続文字列名をページの背後にコード化したままにしないでください。代わりに、ストアドプロシージャを使用するか、ソリューションを通じてアクセス可能な文字列定数を含むクラスを使用してください。
  • 常に sql パラメーターを使用し、文字列連結の使用を停止します。SQL 感染の問題が発生するためです。
于 2012-06-13T18:11:29.617 に答える