所以我想搜索我通过数据库输入的区号。我输入了代码,然后假设在多行文本框中打印出该区号下的电话号码和持续时间。这就是我到目前为止所拥有的。是的,我是初学者和坏人: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类型的表达式
答案 0 :(得分:0)
我认为查询数据库本身以获取此信息并使用返回值填充文本框或列表框是一种更好的方法来实现您想要实现的目标。
答案 1 :(得分:0)
好的,问题是你是按列而不是行进行迭代。这是一个工作示例,显示了执行相同操作的两种方法。一个遍历DataTable(你使用DataSet是因为你有多个表吗?如果你只有一个表使用DataTable,如果你有多个使用DataSet)。第二个使用我放入的Linq,因为作为初学者,有助于了解C#的一些更有用的功能。确保包含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();
}