2016-04-18 118 views
0

我想选择一个服务器,并只获取服务器的数据库名称选择,但在此代码..给我所有服务器的所有数据库!请问有什么解决办法?ASP.NET MVC 5 DropDownList selectedindexchanged

控制器

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 }); 
    } 

查看

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

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

我想选择一台服务器,并获得该服务器的数据库名称,但在这段代码中,我得到的所有服务器的所有数据库,该如何解决? –

+0

编辑你的问题,解释问题(不在评论中) –

+0

done!,plz帮助 –

回答

0

这大部分与javascriptajax,当在服务器下拉菜单改变所选择的选项拨打电话与ajax控制器中的一个动作做到了返回一个PartialView,其下拉列表中填充了所选服务器的数据库列表。

+0

是的,我认为用JavaScript和AJAX完成,但我不知道如何? –

0

使用你的代码上面,这会列出所有可用的服务器,因为

System.Data.Sql.SqlDataSourceEnumerator.Instance 

获取System.Data.Sql.SqlDataSourceEnumerator的一个实例,可用于检索有关可用SQL Server的信息实例。

所以,如果你想只有一个SQL Server实例,你必须把一些条件来获取迭代的一个实例。例如,”

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