-3

デバイス アプリケーションで一部のデータをループ処理したいと考えています。例えば:

Select name, surname, mail_ad, phone_nr from cust_details

フォームで、次と前のボタンを使用して行ごとに表示したい。例えば:

名前: ヴェルナー

姓名: VDH

メール: werner@me.com

電話番号: 0716848805

[前へ] [次へ]

私はこれに多くの問題を抱えてきました。以前にリストを使用したことがありますが、機能させたいように機能しません。誰かがここで私を助けてくれませんか。

リストの使用方法:

public List<String> InfoList = new List<String>();
int i = 1;

conn.Open();
string query;
query = "Select name, surname, mail_ad, phone_nr from cust_details";
OracleCommand cmd = new OracleCommand(query, conn);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
   this.InfoList.Add(dr["name"].ToString());
   this.InfoList.Add(dr["surname"].ToString());
   this.InfoList.Add(dr["mail_ad"].ToString());
   this.InfoList.Add(dr["phone_nr "].ToString());
}
dr.Close();
conn.Close();

次に、[次へ] ボタンと [前へ] ボタンで:

if (i + 1 < this.InfoList.Count)
   label1.Text = this.InfoList[++i];
if (i + 1 < this.InfoList.Count)
   label2.Text = this.InfoList[++i];
if (i + 1 < this.InfoList.Count)
   label3.Text = this.InfoList[++i];
if (i + 1 < this.InfoList.Count)
    label4.Text = this.InfoList[++i];


if (i - 1 < this.InfoList.Count)
   label1.Text = this.InfoList[--i];
if (i - 1 < this.InfoList.Count)
   label2.Text = this.InfoList[--i];
if (i - 1 < this.InfoList.Count)
   label3.Text = this.InfoList[--i];
if (i - 1 < this.InfoList.Count)
   label4.Text = this.InfoList[--i];

データを表示するためにラベルを使用しています。私が抱えている問題: 次にヒットしたときに、ラベルの順序が混同されることがあります。または、1 つのラベルに情報が含まれていません。前にヒットし、詳細が残っていない場合、例外が発生します。

4

3 に答える 3

2

これがあなたの探しているものかどうかはわかりませんが、単純にクラスを作成してからList<YourClass>. を使用して定義します。List<YourClass> myList = new List<YourClass>();

リストに値を追加するには、オブジェクトを作成し、YourClassそこで値を定義する必要があります。

YourClass myClassObject = new YourClass();

myClassObject.name = dr[i].toString(); //This is the database reader 

Class YourClass次のプロパティが含まれています。

string name, 
string surname, 
string mail_address, 
string phone_nr.

プロパティは次のように記述され、グローバル変数のように動作します。

internal string mystring {get; set;}

次に、このリストをループして、変数を次のように使用できます。

name_Lbl.Text = this.myList.name[i]; //This is an example.

次に、ボタンの OnPress-Event を使用して、 をインクリメントまたはデクリメントしますi

編集:クラスに適切な名前を付けてください;)

編集 2: プロパティの詳細については、CLICK ME

于 2013-01-21T07:48:29.003 に答える
0

それをクラスに変えます:

class CustDetails
public string Name
{
get;
set;
}
public string Surname
{
get;
set;
}
public string Email
{
get;
set;
}
public ulong PhoneNumber
{
get;
set;
}
于 2013-01-21T07:44:54.463 に答える
0

ステップ 1、詳細をデータ バッグ クラスにカプセル化する

public class CustDetails
{
    public string Name {get; set;}
    public string Surname {get; set;}
    public string MailAddress {get; set;]
    public string Phone {get; set;}
 }

ステップ 2. CustDetails のリストを作成します -- これが InfoList です

 public List<CustDetails> InfoList = new List <CustDetails>();

ステップ 3. 照会した詳細を新しいクラスに割り当てる

conn.Open();
string query = "Select name, surname, mail_ad, phone_nr from cust_details";
OracleCommand cmd = new OracleCommand(query, conn);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
   var details = new CustDetails { Name = dr["name"].ToString(),
                     Surname = dr["surname"].ToString(),
                     MailAddress = dr["mail_ad"].ToString(),
                     Phone = dr["phone"].ToString() }
   this.InfoList.Add(details);
}
dr.Close();
conn.Close();

ステップ 4. 現在の位置を追跡します。前へボタンと次へボタンで前または次の詳細にアクセスするメソッドを実装します。前のボタン ハンドラーと次のボタン ハンドラーは、それぞれ次のようになります。

//previous
if (current == 0)
    //you are at the beginning of the list, the button should be disabled, 
    // handle it accordingly. In this case I just terminate
    return;
current--;
var detail = InfoList[current];
label1.Text = detail.Name;
label2.Text = detail.Surname;
label3.Text = detail.MailAddress;
label4.Text = detail.Phone;


//next
if (current == (InfoList.Count -1))
    //you are at the endof the list, the button should be disabled, 
    // handle it accordingly. In this case I just terminate
    return;

current++;
var detail = InfoList[current];
label1.Text = detail.Name;
label2.Text = detail.Surname;
label3.Text = detail.MailAddress;
label4.Text = detail.Phone;

メソッド呼び出し間で「現在」を追跡できることを確認してください。パラメーターとして追加するか、グローバル変数を作成します。

于 2013-01-21T08:09:23.800 に答える