2016-05-16 39 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