【发布时间】:2015-07-04 17:00:13
【问题描述】:
我正在尝试构建一个 Windows 应用程序,其中有一个组合框,并且在 Load() 期间,我用我的 app.Config 文件中可用的所有连接字符串填充这个组合框。
这里是app.Config sn-p:
<!-- Adding Multiple Servers in Connection String-->
<connectionStrings>
<add name="SQLConnect-1"
connectionString="Data Source=SAHIL; Initial Catalog=RecordComparisonTool; Integrated Security=SSPI"
providerName="System.Data.SqlCLient"/>
<add name="SQLConnect-2"
connectionString="Data Source=SAHIL; Initial Catalog=RecordComparisonTool; User Id=test; Password=12123; Integrated Security=SSPI"
providerName="System.Data.SqlCLient"/>
<add name="SQLConnect-3"
connectionString="Data Source=SAHIL; Initial Catalog=RecordComparisonTool; User Id=test; Password=32315; Integrated Security=True"
providerName="System.Data.SqlCLient"/>
</connectionStrings>
我创建了一个 CompareResult 类,我在其中尝试从 app.Config 中获取所有值并将其显示到组合框。
namespace RecordComparisonTool_Win
{
public class ConnectionString
{
public string name { get; set; }
public string conString { get; set; }
public string provider { get; set; }
}
public class CompareResult
{
public List<ConnectionString> GetConnection()
{
List<ConnectionString> conStr = new List<ConnectionString>();
ConnectionString conn = new ConnectionString();
foreach (ConnectionStringSettings css in ConfigurationManager.ConnectionStrings)
{
if (!(css.Name == "LocalSqlServer" || css.Name == "LocalMySqlServer"))
{
conn.name = css.Name;
conn.conString = css.ConnectionString;
conn.provider = css.ProviderName;
conStr.Add(conn);
}
}
return conStr;
}
}
}
问题是当我尝试将它与组合框绑定时,它根据 app.Config 文件显示三个记录,但所有记录的值都与“SQLConnect-3”相同。对于所有记录,我无法找到使用“SQLConnect-3”更新列表的原因。请帮助修复错误。这是我将此列表绑定到 ComboBox 的 sn-p
protected void LoadConnection()
{
CompareResult compareResult = new CompareResult();
List<ConnectionString> connectionString = new List<ConnectionString>();
connectionString = compareResult.GetConnection();
cbTokenLeft.DataSource = connectionString;
cbTokenLeft.DisplayMember = "name";
cbTokenLeft.ValueMember = "conString";
}
【问题讨论】:
-
更新:根据下面提到的答案,我在 foreach() 循环之外实例化 ConnectionString 的对象时犯了一个错误,并且每次都会覆盖数据。通过在 foreach() 循环中实例化它,问题得到了解决。谢谢大家的解决方案。
标签: c# winforms list combobox app-config