2016-07-22 85 views
1

假設我們有5個公司有五個數據庫。現在情況就是我們需要更改公司名稱上的數據庫路徑[連接字符串],它出現在下拉列表中。當我們選擇公司名稱選擇下拉值時,我們需要轉到該公司數據庫。如何在asp.net中做到這一點,以及在公司名稱的web.config和下拉事件中做了哪些必要的更改。用DropDownList管理連接字符串

現在我想:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (DropDownList1.SelectedItem.Text.Equals("RVL LOGISTICS (I) PVT LTD")) 
    { 
     string cs = ConfigurationManager.ConnectionStrings["CompMasterConnectionString"].ConnectionString; 
    } 
    else if (DropDownList1.SelectedItem.Text.Equals("SIMONS SHIPPING PVT LTD")) 
    { 
     string vs = ConfigurationManager.ConnectionStrings["DUM01ConnectionString"].ConnectionString; 
    } 
    else 
    { 
     DropDownList2.Enabled = false; 
    } 
} 

回答

0

請看下面的代碼在運行時基於下拉列表中選擇文本或值根據自己的需要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值。

後,在該方法:

  1. 加載配置文件。

  2. 在XMLDOcument中加載該文件,以便我們可以輕鬆解析。

3.按照我們已解析的名稱查找連接字符串節點。

  1. 設置連接字符串值的那個節點的值。

  2. 再次保存文檔(web.COnfig)。

注意:這不是像這樣改變web配置的好方法。人們可以提供其他安全的方式。

+0

謝謝先生..它非常有幫助 –

+0

您的歡迎。如果它有幫助,你可以標記爲答案。 – user2435617