2011-10-21 18 views
4

GridView内にあるTextBoxからTextプロパティを取得したいとします。このTextBoxには、私のデータベースからのデータがあります。このデータを変更すると、自分のデータベースで更新を行いたいと思います。GridView内のTextBox

私はTextBoxのTextを検索すると、私が今置いた値ではなく、データベースから来た古い値を取得します。

私のテキストボックスに書き込む私の実際のデータを取得するにはどうすればいいですか?それは私のデータベースから来ていませんか?

protected void VerifyPriority() 
{ 
    for (int i = 0; i < GridView1.Rows.Count; i++) 
    { 
     GridViewRow RowView = (GridViewRow)GridView1.Rows[i]; 
     TextBox txt = (TextBox)GridView1.Rows[i].FindControl("txtPriority"); 

     if (txt != null) 
     { 
      if (txt.Text != this.changes[i]) 
      { 
       this.UpdatePriority(this.codigo[i], txt.Text); 
      } 
     } 
    } 
} 
+0

このメソッドを間違った場所で実行している可能性があります。どのイベントからこれを呼びますか? – Birey

+0

「変更を保存」ボタンがあります。 OnClickイベント –

+0

では、jamesが言うように、あなたにはそのポストバックチェックがありますか?私はポストバックで再びデータベースから値を再バインドしていると思いますが、これは非常にシンプルでなければなりません。 – Birey

答えて

5

おそらくあなたは、あなたがすべてのポストバック後にGridViewを再結合の代わりに、一度それを結合し、ViewStateがデータを永続化させるしていますよりももっと。ページがポストバックされるたびにGridViewをバインドすると、行った変更はすべて消去され、データベースの情報に置き換えられます。

あなた(この場合)のみ、最初のページの負荷に結合ください:場所に上記のコードを入れた後

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     GridView1.DataSource = GetSomeData(); 
     GridView1.DataBind(); 
    } 
} 

、あなたはテキストボックスから正しいデータを得ることができる必要があります:

foreach (GridViewRow row in GridView1.Rows) 
{ 
    TextBox txt = row.FindControl("TextBox1") as TextBox; 
    if (txt != null) 
    { 
     string value = txt.Text; 
    } 
} 
+0

私はIsPostBackを忘れました。ありがとう! –

+0

問題ありません。あなたがうまく働いてうれしい。 –