- 題名: データテーブルの行移動について
- 日時: 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