2016-07-22 9 views
1

5つのデータベースを持つ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ブロックをswitchブロックに変更しました。これはコードをうまく読み込むのに役立ちます。ドロップダウンから選択したテキスト値をチェックします。

最初のメソッドはGetConStringFromAppSettingです。それはドロップダウンの選択されたテキストを受け入れ、WebConfigのAppSettingセクションで同じことをチェックし、その値を取得します。

<appSettings>  
<add key="CompanyName" value="constringOfThatCompany" /> 
<add key="CompanyName1" value="constringOfThatCompany1" /> 
</appSettings> 

方法AddUpdateConnectionStringさがあることが後:ウェブコンフィグののAppSettingで

は、以下のように動作しません。 ITは上記のメソッドとデフォルトの接続文字列名から受け取ったConstring値を受け入れます。

  1. 設定ファイルをロードします。その方法ではその後

  2. このファイルをXMLDocumentにロードすると、簡単に解析できます。

3.私たちが解析した名前で接続文字列ノードを見つけます。

  1. 接続文字列の値をそのノードの値に設定します。

  2. 文書(web.COnfig)を再度保存します。

注:これは、このようなウェブの設定を変更するには良い方法ではありません。他の安全な方法を提供することができます。

+0

ありがとうございます。非常に役に立ちます –

+0

ようこそ。それが役に立ったら、答えとしてマークすることができます。 – user2435617