- 題名: データテーブルの行移動について
- 日時: 2014/01/10 10:17:38
- ID: 32050
- この記事の返信元:
- (なし)
- この記事への返信:
- [32051] Re[1]: データテーブルの行移動について2014/01/10 12:03:19
- ツリーを表示
■No32050に返信(昌也さんの記事) > コードが余り良くないと感じます。コードは以下になります。 > 良いかはわかりませんが、俺ならこう書きます的なものを。 tdCounter は tdIndex に名前を変更しました。(あと初期値も変更) private int tdIndex = -1; // Form_Load時にIndex=0の要素を表示していないので-1 /******************************************************************************/ //テーブルデータ BACK ◀ボタン押下時 /******************************************************************************/ private void btnBack_Click(object sender, EventArgs e) { if (tdIndex > 0) { tdIndex--; displayTextBox.Text = dt.Rows[tdIndex]["ID"].ToString(); } } /******************************************************************************/ //テーブルデータ Foward ▶ボタン押下時 /******************************************************************************/ private void btnFoward_Click(object sender, EventArgs e) { int getTableRowCount = dt.Rows.Count; if ((getTableRowCount > 0) && (getTableRowCount - 1 > tdIndex)) { tdIndex++; displayTextBox.Text = dt.Rows[tdIndex]["ID"].ToString(); } }
分類:[.NET]
DataTable内の移動についてお教え下さい。
Formにテキストボックスが3つ配置されています。
「表示」「◀」「▶」の3つです。
「表示」テキストボックスにはデータベースより取得したデータテーブルの値を表示します。
(テキストボックスはバインディングしていません)
「◀」「▶」ボタンをおすと、データテーブルの行の値が変化します。
そのようなコードを書いたのですが、コードが余り良くないと感じます。コードは以下になります。
btnBack_Click、btnFoward_Clickで配列を移動する為に、tdCounterを加算、減算をおこなっています。
ここのコードがスマートではなく感じます。なんらかの関数などを使えばもっとスマートに書けると
思うのですが、何か上手な書き方はないでしょうか?よろしくお願いします。
DataTable dt;
SqlConnection conn;
SqlDataAdapter adp;
//テーブルデータ移動用
int tdCounter = 0;
//Formロード時
dt = new DataTable();
adp = new SqlDataAdapter("SELECT * FROM TABLE", conn);
adp.Fill(dt);
/******************************************************************************/
//テーブルデータ BACK ◀ボタン押下時
/******************************************************************************/
private void btnBack_Click(object sender, EventArgs e)
{
//データテーブルの行数取得
int getTableRowCount = dt.Rows.Count;
//tdCount-1が-1以上になるのを防ぐ。配列が-1にはならない
if (tdCounter -1 != -1)
{
//バックボタンを押したら、1マイナス。
tdCounter -= 1;
//テーブルデータが存在する場合。配列の移動。Back
this.dsiplayTextBox.Text = dt.Rows[tdCounter]["ID"].ToString();
}
}
/******************************************************************************/
//テーブルデータ Foward ▶ボタン押下時
/******************************************************************************/
private void btnFoward_Click(object sender, EventArgs e)
{
//データテーブルの行数取得
int getTableRowCount = dt.Rows.Count;
if (tdCounter < getTableRowCount)
{
//テーブルデータが存在する場合。配列の移動。Foward
this.displayTextBox.Text = dt.Rows[tdCounter]["ID"].ToString();
//フォワードボタンを押したら、1カウント。デーテテーブルの行数以上にならないようにする。
tdCounter += 1;
if (tdCounter == getTableRowCount)
{
tdCounter -= 1;
}
}
}
TABLEデータ
ID(int)
111
222
333