我正在搜索一种方法,用于动态设置从数据库中读取名称和值的变量列表的值。
我找到了很多用于获取变量名称和值的代码,但没有任何用于设置值的代码。
我会试着更好地解释自己。 想想拥有一个包含两列的数据库,比如“name”和“value”。 比如你有两条记录:
1)Name =“string1”,Value =“message1” 2)Name =“string2”,Value =“message2”
我有代码来读取这两条记录,我想要的是一种方法,从记录中获取变量的名称,并为它们分配相应的值。
代码是这样的:
SqlCommand cmd = new SqlCommand("Select Name, " + lng + " from dbo.traductions", Global.languageconn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
var v1 = dr["Name"].ToString();
var v2 = dr[lng].ToString();
//Something here to assign the value stored in v2 to the variable whose name is stored in v1
}
谢谢大家
答案 0 :(得分:1)
我不知道你为什么要这样做,但为什么不用字典?
SqlCommand cmd = new SqlCommand("Select Name, " + lng + " from dbo.traductions", Global.languageconn);
SqlDataReader dr = cmd.ExecuteReader();
var variables = new Dictionary<string, string>();
while (dr.Read())
{
var v1 = dr["Name"].ToString();
var v2 = dr[lng].ToString();
variables.Add(v1, v2);
}
然后使用它们:
var x= variables[v1];
更新
我看到你添加了一条说明你需要引用对象的说明。您可以将“词典”更改为保留对象。你没有提到类型,所以为了论证,我会假设它们都是文本框:
SqlCommand cmd = new SqlCommand("Select Name, " + lng + " from dbo.traductions", Global.languageconn);
SqlDataReader dr = cmd.ExecuteReader();
var variables = new Dictionary<string, object>();
while (dr.Read())
{
var v1 = dr["Name"].ToString();
var v2 = dr[lng].ToString();
var textbox = new TextBox() { Text = v2 };
variables.Add(v1, textbox);
}
然后按名称使用它们:
var textbox= variables[v1];
答案 1 :(得分:0)
根据您的评论,您希望按姓名访问&#34;控件&#34 ;;这是通过Controls.Find()完成的:
Control ctl = this.Controls.Find(v1, true).FirstOrDefault();
if (ctl != null && ctl is TextBox)
{
TextBox tb = (TextBox)ctl;
tb.Text = v2;
}