2016-04-18 18 views
0

Ich möchte einen Server auswählen und nur Datenbanken Name des Servers ausgewählt, aber in diesem Code .. gibt mir alle Datenbanken aller Server !! Was ist die Lösung bitte?ASP.NET MVC 5 DropDownList selectedindexexchanged

-Controller

List<SelectListItem> allServer = new List<SelectListItem>(); 
List<SelectListItem> alldatabases = new List<SelectListItem>(); 
allServer.Add(new SelectListItem() { Text = "Please Select DataBase...", Value = "", Selected = true }); 
System.Data.Sql.SqlDataSourceEnumerator instance = System.Data.Sql.SqlDataSourceEnumerator.Instance; 
System.Data.DataTable dt = instance.GetDataSources(); 
List<string> ddlInstances = new List<string>();  
foreach (DataRow dr in dt.Rows) 
{ 
    dr["InstanceName"])); 
    ServerConnection Conn; 
    Conn = new ServerConnection(); 
    Conn.ServerInstance = string.Concat(dr["ServerName"], "\\", dr["InstanceName"]); 
    allServer.Add(new SelectListItem() { Text = Conn.ServerInstance, Value = Conn.ServerInstance, Selected = true }); 
    Server Ser = new Server(Conn); 
    foreach (Database db in Ser.Databases) 
    { 
     alldatabases.Add(new SelectListItem() { Text = db.Name, Value = db.Name, Selected = false }); 
    } 

Ansicht

@using (Html.BeginForm("Index", "Connect", FormMethod.Get)) 
{ 
    Server Names 
    @Html.DropDownList("SerNames") 

    DB Names 
    @Html.DropDownList("DBNames") 
+0

i einen Server ausgewählt wanna und Datenbanken Namen dieses Servers erhalten, aber in diesem Code, erhalte ich alle Datenbanken aller Server, was ist die Lösung? –

+0

Bearbeiten Sie Ihre Frage, das Problem zu erklären (nicht in comments) –

+0

fertig!, plz hilfe –

Antwort

0

Das am meisten mit javascript und ajax erfolgen, wenn die gewählten Option im Server-Drop-Down-Änderung einen Anruf mit ajax zu einer Aktion in der Steuerung machen, dass Gibt eine PartialView mit einem Dropdown mit der Liste der Datenbanken für den ausgewählten Server zurück.

+0

ja ich denke mit javascript und ajax gemacht, aber ich weiß nicht wie ??? –

0

Verwendung der oben Code, wird dies alle Server, weil verfügbar Liste aus

System.Data.Sql.SqlDataSourceEnumerator.Instance 

eine Instanz der System.Data.Sql.SqlDataSourceEnumerator Gets, die verwendet werden können Informationen über die verfügbaren SQL Server abzurufen Instanzen.

Wenn Sie also nur eine SQL Server-Instanz haben möchten, müssen Sie eine Bedingung angeben, um die eine Instanz zum Iterieren zu erhalten. Zum Beispiel“

foreach (DataRow dr in dt.Rows) 
{ 
    if(!dr["InstanceName"]=="YourInstanceName"){ continue;} else {//Do you thing } 
}