請看下面的代碼在運行時基於下拉列表中選擇文本或值根據自己的需要dynamiccaly更改連接字符串。
<asp:DropDownList ID="ddltest" AutoPostBack="True" OnSelectedIndexChanged="ddltest_OnSelectedIndexChanged" runat="server">
<asp:ListItem Text="CompanyName" Value="1"></asp:ListItem>
<asp:ListItem Text="CompanyName1" Value="2"></asp:ListItem>
</asp:DropDownList>
protected void ddltest_OnSelectedIndexChanged(object sender, EventArgs e)
{
var conString = "";
var ConStringName = "test";
switch (ddltest.SelectedItem.Text.ToLower())
{
case "CompanyName":
conString = GetConStringFromAppSetting("CompanyName");
AddUpdateConnectionString(conString, ConStringName);
break;
case "CompanyName1":
conString = GetConStringFromAppSetting("CompanyName1");
AddUpdateConnectionString(conString, ConStringName);
break;
}
}
private string GetConStringFromAppSetting(string test)
{
var constring = ConfigurationManager.AppSettings[test].Trim();
return constring;
}
private void AddUpdateConnectionString(string conStringValue, string conStringName)
{
var path = Server.MapPath("~/Web.Config");
var doc = new XmlDocument();
doc.Load(path);
if (doc.DocumentElement != null)
{
var list = doc.DocumentElement.SelectNodes(string.Format("connectionStrings/add[@name='{0}']", conStringName));
if (list != null)
{
var node = list[0];
if (node.Attributes != null) node.Attributes["connectionString"].Value = conStringValue;
}
}
doc.Save(path);
}
在上面的代碼我改變了你的if else塊切換塊,這有助於很好地閱讀代碼。它會從下拉菜單中檢查選定的文本值。
第一種方法是GetConStringFromAppSetting。它將接受選定的文本下拉菜單,它將檢查WebConfig的AppSetting Section中的相同內容,並從中獲取該值。
在Web配置的AppSetting做的工作如下圖所示:
<appSettings>
<add key="CompanyName" value="constringOfThatCompany" />
<add key="CompanyName1" value="constringOfThatCompany1" />
</appSettings>
之後,有方法AddUpdateConnectionString。 IT將接受從上面方法和默認連接字符串名稱接收的Constring值。
後,在該方法:
加載配置文件。
在XMLDOcument中加載該文件,以便我們可以輕鬆解析。
3.按照我們已解析的名稱查找連接字符串節點。
設置連接字符串值的那個節點的值。
再次保存文檔(web.COnfig)。
注意:這不是像這樣改變web配置的好方法。人們可以提供其他安全的方式。
謝謝先生..它非常有幫助 –
您的歡迎。如果它有幫助,你可以標記爲答案。 – user2435617