0

**我创建了一个网络服务来检索特定公司代码的所有者列表。当我运行这个网络服务时......它工作正常。请帮助我使用 Web 应用程序执行此操作,因为当我执行相同操作时,显示的结果是“SYSTEM.TOSTRING []”
Web 应用程序包含一个用于输入公司代码的文本框和一个用于在下拉列表

 public class OwnerWebService : System.Web.Services.WebService
{     
             string ConnectionString = "Data Source=localdb" + ";" + "Initial Catalog=Prod" + ";" +
             "Persist Security Info=True" + ";" +
             "User ID=User1" + ";" +
             "Password=User1" + ";" +
             "enlist=false";

 [WebMethod]
    public string[] dtFetch(string strCompanyCode)
    {
        List<string> messages = new List<string>();
        SqlConnection cnMySQL = new SqlConnection(ConnectionString );
        cnMySQL.Open();
        string sqlquery = string.Format("SELECT OwnerName FROM tbl_Owner WHERE CompanyCode='{0}'", strCompanyCode);
        SqlCommand com = new SqlCommand(sqlquery, cnMySQL);
        SqlDataReader sqlReader = com.ExecuteReader();

        while (sqlReader.Read())
        {
            messages.Add(sqlReader.GetString(0));
        }


        cnMySQL.Close();
        return messages.ToArray();

    }

}

4

2 回答 2

0

您不能将一组字符串 (string[]) 放入一个文本框中,该文本框只能显示一个字符串。

您的网络服务很好:它返回所有者名称的集合。所以必须修改用户界面。

有几种解决方案:

  1. 在您的用户界面中,将所有字符串连接成一个字符串(String.Join(", ", messages))。不要在您的网络服务中这样做!不应允许网络服务进行 UI 格式化!
  2. 在您的用户界面中,将文本框替换为列表框,表明您可以在该列表框中显示多个所有者名称。

最后一个(离题)建议:为您的 SqlConnection 和 SqlDataReader 使用关键字“使用”。这确保它们将被关闭,即使发生异常也是如此。

于 2013-04-23T06:27:16.013 回答
0

不要返回 string[] 而是尝试返回逗号分隔的字符串。

返回逗号分隔的字符串修改最后一行

return messages.ToArray();

return String.Join(',',messages.ToArray());

还将返回类型更改为string 希望它有帮助......

于 2013-04-23T05:46:40.203 回答