2016-05-16 45 views
0

我的項目中有兩個dropdownlist。我的整個項目使用一個connectionstring但是對於這兩個下拉列表,我想使用不同的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")); 

和我結合第二第一個列表,其代碼的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; 
} 

如何使用不同的connectionstring這兩個下拉列表

UPDATE

我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

看來你必須修改DataAccessLayer類,通過在連接字符串中構造函數/添加一種方法來選擇連接字符串

- 更新 - 修改DataAcc essLayer

public DataAccessLayer(string connectionstring, Providers provider) 
{ 

    strConnectionString = ConfigurationManager.ConnectionStrings[connectionstring].ConnectionString; 

然後初始化它作爲(用於SQL Server)

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

爲其他連接指定它

例如,如果ConnectionString2

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

這麼多的信息是不夠的以適應答案。好心地顯示一些代碼以獲得更多理解。如果您有任何疑問,請首先發表評論並將其清除 – BNN

+0

post ur DataAccessLayer class code –

+0

檢查更新的問題 – BNN