【问题标题】:DataList ASP.net c# looping throughDataList ASP.net c# 循环遍历
【发布时间】:2013-09-16 10:06:29
【问题描述】:

我有一个 Datalist,它从包含服务器名称的 SQL 数据库中提取数据。 (6 个)

我想循环遍历 Datalist,并为列表中的每个服务器使用 WMI 连接到它,并查看某个值是否为真。

我有这个为一个服务器名称工作,但当我将它与数据列表结合起来时却没有。

我哪里错了?

谢谢

 string SARHServerName = "";
 //SARHServerName = reader["ServerName"].ToString();

 ConnectionOptions con = new ConnectionOptions();
 con.Username = "Username";
 con.Password = "Password";

 foreach (DataListItem item in DataList.Items)
 {

      Label1.Text = SARHServerName;
      SARHServerName += "," + ((Label)    (item.FindControl("ServerNameLabel"))).Text;
      ManagementScope scope =
        new ManagementScope(
        "\\\\" + SARHServerName + "\\root\\CIMV2\\TerminalServices", con);
      scope.Options.EnablePrivileges = true;
      scope.Options.Authentication = AuthenticationLevel.PacketPrivacy;
      scope.Options.Impersonation = ImpersonationLevel.Impersonate;
      scope.Connect();

      //create object query
      ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_TerminalServiceSetting");

      //create object searcher
      ManagementObjectSearcher searcher =
                                            new ManagementObjectSearcher(scope,     query);

      //get collection of WMI objects
      ManagementObjectCollection queryCollection = searcher.Get();

      //enumerate the collection.
      foreach (ManagementObject m in queryCollection)
      {
          if (m["Logons"].ToString() == "0")
          {
              ((Image)(item.FindControl("ServerDown"))).Visible = true;
              ((Image)(item.FindControl("ServerUP"))).Visible = false;
          }
          else
          {
              ((Image)(item.FindControl("ServerDown"))).Visible = false;
              ((Image)(item.FindControl("ServerUP"))).Visible = false;
          }
       }
  }

将数据源绑定到 Datalist 后,我​​将调用此函数。

public void GetDataFromSQLGridView()
{

SqlConnection conn = null;

    try
     {

conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DailyChecksConnectionString"].ConnectionString);

            {
                conn.Open();
                using (SqlCommand cmd =
                    new SqlCommand("SELECT ServerName FROM Servers_Checks", conn))
                {

                    DataListSQL.DataSource = cmd.ExecuteReader();
                    DataListSQL.DataBind();
                }

            }

        }
        catch { }
        finally { GetRemoteDesktop(); }


}

会是我的 SQL 命令吗?看起来它一次性从 SQL 中返回所有服务器名称,而不是返回一个然后继续拉另一条记录。

好的,我找到了一些关于此的更多信息。我做了一个

Response.Write(SARHServerName);
Response.Write("<br />");

它通过循环很好,但它像这样连接结果

server1
server1server2
server1server2server3
server1server2server3server4
server1server2server3server4server5
server1server2server3server4server5server6

我必须靠近?

【问题讨论】:

  • 你在做什么活动?
  • 这可能是题外话,但代码的最后一行 ((Image)(item.FindControl("ServerUP"))).Visible = false; 应该是 ((Image)(item.FindControl("ServerUP"))).Visible = true; 吗?
  • 道歉。这会将服务器名称传递给字符串“SARHServerName”,但它会将它们传递为“ServerName,ServerName,ServerName,ServerName,ServerName”而不是我只希望它传递一个并重复......这清楚吗

标签: c# asp.net datalist


【解决方案1】:

变化:

SARHServerName = ((Label)    (item.FindControl("ServerNameLabel"))).Text;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多