数据表未通过WCF服务

时间:2016-07-14 12:06:11

标签: c# .net wcf datatable

我正在尝试通过DataContract将一个Class对象作为WCF Webservice返回。此类对象具有DataTable(DataMember)作为属性,该属性在webserivce方法中加载,但未在客户端分配给DataTable。下面是我试图运行的代码。

DataContract定义:

[DataContract]
public class RelationshipDetails
{
    [DataMember]
    public DataTable AllRelationships { get; set; }

    [DataMember]
    public DataTable RelationshipTypes { get; set; }

    [DataMember]
    public DataTable ContactFrequencies { get; set; }

    [DataMember]
    public DataTable ObjectiveTypes { get; set; }
}

接口:

    [OperationContract]
    RelationshipDetails GetRelationshipTypes(string spaceId, ref string message);

    [OperationContract]
    RelationshipDetails GetContactFrequencies(string spaceId, ref string message);

    [OperationContract]
    RelationshipDetails GetObjectiveTypes(string spaceId, ref string message);

接口的定义

    public RelationshipDetails GetRelationshipTypes(string spaceId, ref string message)
    {
        RelationshipDetails rd = new RelationshipDetails();
        objBAL = new BAL();
        rd.RelationshipTypes = objBAL.GetRelationshipTypes(spaceId, ref message);
        return rd;
    }

    public RelationshipDetails GetContactFrequencies(string spaceId, ref string message)
    {
        RelationshipDetails rd = new RelationshipDetails();
        objBAL = new BAL();
        rd.ContactFrequencies = objBAL.GetContactFrequencies(spaceId, ref message);
        return rd;
    }

    public RelationshipDetails GetObjectiveTypes(string spaceId, ref string message)
    {
        RelationshipDetails rd = new RelationshipDetails();
        objBAL = new BAL();
        rd.ObjectiveTypes = objBAL.GetObjectiveTypes(spaceId, ref message);
        return rd;
    }

现在在上面的定义中,我能够将数据表加载到DataTable对象的rd属性中。 peroblem是在客户端应用程序中使用此方法时,datatable未填充。以下是客户端代码。

    SpaceServiceClient ssc = new SpaceServiceClient();
    string message = "";
    string gUserName = "";
    string gSpaceId = "";
    string gSpaceName = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        gUserName = Session["gUserName"].ToString();
        gSpaceId = Session["gSpaceId"].ToString();
        //gSpaceId = "1";
        gSpaceName = Session["gSpaceName"].ToString();

        if (!Page.IsPostBack)
        {
            LoadRelationshipTypes();
            LoadContactFrequencies();
            LoadObjectiveTypes();
        }
    }

    void LoadRelationshipTypes()
    {
        DataTable dt = new DataTable();
        dt = ssc.GetRelationshipTypes(gSpaceId, ref message).RelationshipTypes;
        gvRelationshipTypes.DataSource = dt;
        gvRelationshipTypes.DataBind();
    }

    void LoadContactFrequencies()
    {
        DataTable dt = new DataTable();
        dt = ssc.GetContactFrequencies(gSpaceId, ref message).ContactFrequencies;
        gvContactFrequencies.DataSource = dt;
        gvContactFrequencies.DataBind();
    }

    void LoadObjectiveTypes()
    {
        DataTable dt = new DataTable();
        dt = ssc.GetObjectiveTypes(gSpaceId, ref message).ObjectiveTypes;
        gvObjectiveTypes.DataSource = dt;
        gvObjectiveTypes.DataBind();
    }

0 个答案:

没有答案
相关问题