-1

だから、データベースに入力した市外局番を検索したいのです。コードを入力すると、その市外局番の下の電話番号と期間が複数行のテキスト ボックスに出力されると想定されます。これは私がこれまでに持っているものです。はい、私は初心者で下手です:D.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'phonecallsDataSet1.Calls_with_Region' table. You can move, or remove it, as needed.
        this.calls_with_RegionTableAdapter.Fill(this.phonecallsDataSet1.Calls_with_Region);
        tbAreaCode.Text = String.Format("Phone Number" + "\t" + "\t" + "Duration" + "\r\n"
            + "============" + "\t" + "\t" + "=======");
    }

    private void btnSearchAC_Click(object sender, EventArgs e)
    {
        foreach (DataColumn number in phoneCallbindingSource.List)
        {
            if (txtAC.Text == ((int)number["Area Code"]))
            {
                tbAreaCode.Text += ((int)number["Phone Number"]); 
          }
        }
    }
}
}

エラー

[] を使用したインデックス付けを System.Data.DataColumn 型の式に適用することはできません

4

2 に答える 2

0

データベース自体にクエリを実行してこの情報を取得し、テキストボックスまたはリストボックスに返された値を入力することは、達成したいことへのより良いアプローチだと思います。

于 2013-11-02T19:46:32.937 に答える
0

OK、問題は、行ではなく列で反復していることです。これは、同じことを行う 2 つの方法を示す実際の例です。1 つは DataTable を反復処理します (複数のテーブルがあるため、DataSet を使用していますか? テーブルが 1 つしかない場合は DataTable を使用し、複数ある場合は DataSet を使用します)。2 つ目は、C# のより便利な機能のいくつかに触れることが初心者にとって役立つため、私が入れた Linq を使用します。System.Linq を必ず含めてください。これをコンソールアプリのメインに貼り付けて、最初のメイン関数を上書きするだけで、それで遊ぶことができます。

static void Main(string[] args)
{
    string CurrentAreaCode = "415";// Input from textbox;

    // Setup Mock Dataset
    DataSet ds = new DataSet("Information");
    ds.Tables.Add("AreaCodeInformation");
    ds.Tables[0].Columns.Add("AreaCode");
    ds.Tables[0].Columns.Add("PhoneNumber");
    ds.Tables[0].Rows.Add();
    ds.Tables[0].Rows[0][0] = 415;
    ds.Tables[0].Rows[0][1] = 9252222222;

    // output with row iterator
    Console.WriteLine("Using Iteration of DataTable in DataSet");
    foreach (DataRow number in ds.Tables[0].AsEnumerable())
    {
        if (number["AreaCode"].ToString() == CurrentAreaCode)
        {
            Console.WriteLine(number["PhoneNumber"].ToString());
        }
    }
    Console.WriteLine("Press Enter To Continue...");
    Console.ReadLine();

    // output using Linq
    Console.WriteLine("Using Linq");
    Console.WriteLine((from info 
                       in ds.Tables["AreaCodeInformation"].AsEnumerable() 
                       where info.Field<string>("AreaCode") == CurrentAreaCode 
                       select info.Field<string>("PhoneNumber")).FirstOrDefault());
    Console.ReadLine();
}
于 2013-11-02T19:48:16.860 に答える