文本框set1 = 1到30 =在查询中 name = br1id to br30id
文本框设置2 = 1到30 =在结果输出中
我不明白如何基于30个不同的文本框名称创建循环?
我不能复制粘贴这些行30次编辑文本框名称,这看起来不错。
try
{
MySqlConnection mysqlCon = new MySqlConnection(
"server= 195.159.253.229;" +
"Database = bruker;" +
"user id=bobby;" +
"password=LoLOW###;");
MySqlCommand cmd1 = new MySqlCommand(
"SELECT brukernavn From bruker where ID = '" + br1id.Text + "';", mysqlCon);
mysqlCon.Open();
navX[0] = cmd1.ExecuteScalar().ToString();
br1txt3.Text = navX[0];
}
答案 0 :(得分:3)
您需要使用控件枚举器。
假设这是WinForms:
foreach(Control c in this.Controls) {
if(c is TextBox)
Console.WriteLine(c.Text);
}
实际上,我认为这也适用于ASP.Net。 (即使Control位于不同的命名空间中。)
HOWEVER!:这就是为数据网格制作的。
答案 1 :(得分:1)
如果你有600 TextBox
个控件,你真的应该重新考虑你的设计。圣牛。
此外,您的SQL非常受SQL injection的约束。
您希望具体的内容无法完成,因为在运行时没有对C#进行动态评估。您需要做的是创建要使用的控件的集合 - 按照您要使用它们的顺序 - 然后枚举此列表以在查询中使用。但是,绝对应该重写此查询以使用参数。
答案 2 :(得分:0)
以下是如何在表单中按名称获取控件:
// get control by name:
TextBox tb = this.Controls["textBox1"] as TextBox;
if (tb != null) {
// your code here
}
答案 3 :(得分:0)
对所有以前的答案都是,(600个文本框?600个ID和600个以上的查询结果?)但是如果你真的想这样做,作为一种技术,还要将SQL改为:
StringBuilder sb = new StringBuilder(
"SELECT brukernavn From bruker where ID In (");
foreach(Textbox tb in IdTextboxes) sb.Append(tb.Text + ",");
string SQL = sb.ToString(0,sb.Length - 1) + ")";
MySqlConnection mysqlCon =
new MySqlConnection("server=195.225.0.218; " +
"Database = bruker; user id=huggy; password=LoLOW;");
cmd1 = new MySqlCommand(SQL, mysqlCon);