我想选择一台服务器,只获取所选服务器的数据库名称,但在此代码中...给我所有服务器的所有数据库!请问是什么解决方案?
控制器
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)
当使用javascript
和ajax
时,当服务器下拉列表中的所选选项更改为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 }
}