我正在尝试通过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();
}