0

我是 wcf 和休息操作的新手,所以任何帮助都会非常感谢您。

如何在 rdlc 或 datagridview 中显示信息?

我的界面使用名为 GetAllCustomer 的方法设置操作合同

namespace ConnectionToDatabase
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IGetCustomer" in both code and config file together.
    [ServiceContract]
    public interface IGetCustomer
    {
        [OperationContract]
        [WebInvoke(Method = "GET",
            ResponseFormat = WebMessageFormat.Xml,
            BodyStyle = WebMessageBodyStyle.Wrapped,
            UriTemplate = "xml/customers")]        
        List<Customer> GetAllCustomer();
    }
}

我的客户类实现接口类并连接到 sql 数据库并返回客户信息列表

public class GetCustomer : IGetCustomer
    {
        public List<Customer> GetAllCustomer()
        {
            List<Customer> mylist = new List<Customer>();

            using (SqlConnection conn = new SqlConnection("Data Source=MATRIX\;Initial Catalog=******;Integrated Security=True"))
            {
                conn.Open();

                string cmdStr = String.Format("select * from CInformation c inner join EmploymentInformation e on c.CID = e.CID");
                SqlCommand cmd = new SqlCommand(cmdStr, conn);
                SqlDataReader rd = cmd.ExecuteReader();

                if (rd.HasRows)
                {
                    while (rd.Read())
                    {
                        mylist.Add(new Customer(rd["LastName"].ToString(), rd["FirstName"].ToString(), rd["MiddleName"].ToString(), rd["EmailAddress"].ToString(), rd["PhoneNumber"]));
                    }
                }
                conn.Close();
            }

            return mylist;
        }
    }

    [DataContract]
    public class Customer
    {
        [DataMember]
        public string lastname { get; set; }
        [DataMember]
        public string firstname { get; set; }
        [DataMember]
        public string middlename { get; set; }
        [DataMember]
        public string emailaddress { get; set; }
        [DataMember]
        public string phonenumber { get; set; }            
        public Customer(string last, string first, string middle, string email, string phone)
        {
            this.lastname = last;
            this.firstname = first;
            this.middlename = middle;
            this.emailaddress = email;
            this.phonenumber = phone;                
        }


    }//end of class

网络配置

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>

    <services>
      <service name="ConnectionToDatabase.GetCustomer" behaviorConfiguration="EmpServiceBehaviour">
        <endpoint address ="" binding="webHttpBinding" contract="ConnectionToDatabase.IGetCustomer" behaviorConfiguration="web">
        </endpoint>
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="EmpServiceBehaviour">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

窗体应用程序

public Form1()
{
    InitializeComponent();
}

private void btnGetAllCustomers_Click(object sender, EventArgs e)
{
 WebRequest request = WebRequest.Create("http://localhost:52420/GetCustomer.svc/xml/customers");
        WebResponse ws = request.GetResponse();

        StreamReader responseStream = new StreamReader(ws.GetResponseStream());
        string response = responseStream.ReadLine();
        responseStream.Close();   
        textBox1.AppendText(response);
}  

现在看起来像这样

在文本框中

<GetAllCustomerResponse xmlns="http://tempuri.org/"><GetAllCustomerResult xmlns:a="http://schemas.datacontract.org/2004/07/ConnectionToDatabase" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><a:Customer><a:firstname>Dog</a:firstname><a:lastname>Cat</a:lastname><a:middlename>up</a:middlename></a:Customer></GetAllCustomerResult></GetAllCustomerResponse>
4

1 回答 1

0

你需要喜欢这个

    using (nServiceReferenceCustomers.GetCustomerClient svc = new ServiceReferenceCustomers.GetCustomerClient())
    {
        XmlNode node = svc.GetAllCustomer();
        DataSet ds = new DataSet();
        using (XmlNodeReader reader = new XmlNodeReader(node))
        {
            ds.ReadXml(reader);
        }


        DataTable table = ds.Tables["Table"];
        DataRow row = table.Rows[0];
        string Lastname= (string) row["lastname"];
        string Firstname= (string) row["firstname"];
        string Middlename= (string) row["middlename "];
string email= (string) row["emailaddress"];
string Phone= (string) row["phonenumber"];
    }
于 2012-11-11T04:32:26.517 回答