2016-05-16 12 views
0

私のプロジェクトには2つのdropdownlistがあります。私のプロジェクト全体で1つを使用しますconnectionstringしかし、これらの2つのドロップダウンリストに対して、私は別のものを使いたいですconnectionstringカスケードドロップダウンリストに異なる接続文字列を使用

私はweb.configファイルにすべての接続文字列を定義しました。以下のコードは: -

<td style="width: 15%" class="field"> 
    <select id="cmbRecdDept" runat="server" style="width: 25%" onchange="FunEmpFillDept()"> 
     <option value="0">--Select--</option> 
    </select> 
</td> 
<td style="width: 15%" class="field"> 
    <select id="cmbRecdEmp" runat="server" style="width: 25%" onchange="FunSelEmpRecd()"> 
     <option value="0">--Select--</option> 
    </select> 
</td> 

とコードが後ろ

ObjPriDT = ObjPriDal.ExecuteDataTable("select distinct master_mkey, Type_Desc from type_mst_a a join emp_mst b on a. master_mkey=b.department_mkey where b.status in ('A','S','R') order by Type_Desc"); 
    cmbRecdDept.DataSource = ObjPriDT; 
    cmbRecdDept.DataTextField = "Type_Desc"; 
    cmbRecdDept.DataValueField = "master_mkey"; 
    cmbRecdDept.DataBind(); 
    cmbRecdDept.Items.Insert(0, new ListItem("---Select---", "0")); 

及びコードIは、第二のリストを結合する最初のリスト、のonchangeことは、以下である: -

function FunEmpFillDept() { 
     document.getElementById('cmbRecdEmp').innerHTML = ""; 
     var ObjPriOption = document.createElement("Option"); 
     ObjPriOption.text = "ALL"; 
     ObjPriOption.value = "0"; 
     //document.getElementById('txtEmpID').value="0"; 
     document.getElementById('cmbRecdEmp').add(ObjPriOption); 
     StrPriFnName = "FunFillEmp(" + document.getElementById('cmbRecdDept').value + ")"; 
     var ObjPriXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP"); 
     ObjPriXMLHTTP.open("GET", "FrmInwardXMLHTTP.aspx?para=" + StrPriFnName, false); 
     ObjPriXMLHTTP.send(""); 
     if (ObjPriXMLHTTP.responseText != "") { 
      StrPriRow = ObjPriXMLHTTP.responseText.split('|'); 
      for (IntPriI = 0; IntPriI < StrPriRow.length - 1; IntPriI++) { 
       StrPriCol = StrPriRow[IntPriI].split('~'); 
       var ObjPriOption = document.createElement("Option"); 
       ObjPriOption.text = StrPriCol[1]; 
       ObjPriOption.value = StrPriCol[0]; 
       document.getElementById('cmbRecdEmp').add(ObjPriOption); 
      } 
     } 
    } 

とその機能FunFillEmpは、

public static string FunFillEmp(object[] args) 
{ 
    string StrPriReturn = ""; 
    DataAccessLayer ObjPriDt = new DataAccessLayer(); 

    DataTable dt = new DataTable(); 
    dt = ObjPriDt.ExecuteDataTable("select mkey,Emp_Name,emp_card_no from emp_mst where department_mkey=" + args[0].ToString() + " and status in ('A','S','R') order by 2"); 
    if (dt.Rows.Count > 0) 
    { 
     for (int IntpriI = 0; IntpriI < dt.Rows.Count; IntpriI++) 
     { 
      StrPriReturn += dt.Rows[IntpriI][0].ToString() + "~" + dt.Rows[IntpriI][1].ToString() + "~" + dt.Rows[IntpriI][2].ToString() + "|"; 
     } 
    } 
    return StrPriReturn; 
} 
この二つのDropDownList

UPDATEに対して異なるconnectionstringを使用する方法

マイdataAccesslayerコードあなたがあなたのDataAccessLayerクラスを変更する必要がありそうです

public DataAccessLayer(string connectionstring, Providers provider) 
{ 
    strConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 

    switch (provider) 
    { 
     case Providers.SqlServer: 
      objFactory = SqlClientFactory.Instance; 
      break; 
     case Providers.OleDb: 
      objFactory = OleDbFactory.Instance; 
      break; 
     case Providers.Oracle: 
      objFactory = OracleClientFactory.Instance; 
      break; 
     case Providers.ODBC: 
      objFactory = OdbcFactory.Instance; 
      break; 
     case Providers.ConfigDefined: 
      string providername = ConfigurationManager.ConnectionStrings["ConnectionString"].ProviderName; 
      switch (providername) 
      { 
       case "System.Data.SqlClient": 
        objFactory = SqlClientFactory.Instance; 
        break; 
       case "System.Data.OleDb": 
        objFactory = OleDbFactory.Instance; 
        break; 
       case "System.Data.OracleClient": 
        objFactory = OracleClientFactory.Instance; 
        break; 
       case "System.Data.Odbc": 
        objFactory = OdbcFactory.Instance; 
        break; 
      } 
      break; 
    } 
    objConnection = objFactory.CreateConnection(); 
    objCommand = objFactory.CreateCommand(); 
    objConnection.ConnectionString = strConnectionString; 
    objCommand.Connection = objConnection; 
} 

答えて

1

は、コンストラクタに接続文字列を渡します/接続文字列を選択するメソッドを追加する

- 更新日: データを変更essLayer

public DataAccessLayer(string connectionstring, Providers provider) 
{ 

    strConnectionString = ConfigurationManager.ConnectionStrings[connectionstring].ConnectionString; 

そのConnectionString2

DataAccessLayer ObjPriDt = new DataAccessLayer(ConfigurationManager.ConnectionStrings["ConnectionString2"],Providers.SqlServer); 
+0

これだけの情報が十分でない場合

例えば、それを指定し、他の接続のために

DataAccessLayer ObjPriDt = new DataAccessLayer(ConfigurationManager.ConnectionStrings["ConnectionString"],Providers.SqlServer); 

(SQL Server用)として、それをインスタンス化答えに合うように親切に多くの理解のためのいくつかのコードを示してください。疑問がある場合は最初にコメントしてクリアしてください – BNN

+0

投稿者DataAccessLayerクラスコード –

+0

更新された質問を確認してください – BNN

関連する問題