ASP.NET MVC 5 DropDownList selectedindexchanged

时间:2016-04-18 09:04:20

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5

我想选择一台服务器,只获取所选服务器的数据库名称,但在此代码中...给我所有服务器的所有数据库!请问是什么解决方案?

控制器

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")

2 个答案:

答案 0 :(得分:0)

当使用javascriptajax时,当服务器下拉列表中的所选选项更改为ajax调用控制器中返回{{1使用下拉列表填充所选服务器的数据库列表。

答案 1 :(得分: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 }
}