我正在尝试创建一个简单的Web服务,它基本上接受输入参数A,然后根据该参数返回不同表中的结果(来自带有几个表连接的查询)字段,如何捕获该输出以在规则中使用它同时用一个infopath表单字段绑定它?请尽快帮助......
我的代码如下......这里我们将它们作为字符串,但希望它们作为不同的字段...
public class Data
{
//Create new method to get data from ** database
public static List<string> GetData(string ORDNUM_10)
//public struct GetData(string ORDNUM_10)
{
string PMDES1_01 = "";
string DESCRPTN_104 = "";
string PRTNUM_10 = "";
string ORDREF_10 = "";
string TNXDTE_01 = "";
//Create connection
SqlConnection con = new SqlConnection(@"Data Source=*****;Initial Catalog=EEE;Integrated Security=true;");
//SQL Command
SqlCommand cmd = new SqlCommand("SELECT DISTINCT Account_Types.DESCRPTN_104, Part_Master.PMDES1_01,Order_Master.PRTNUM_10,Order_Master.ORDNUM_10,Order_Master.ORDRef_10,Part_Master.TNXDTE_01 FROM.............. (EUM_10 = '"+ ORDNUM_10 + "'", con);
//Open connection
con.Open();
//to read from SQL Server
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
PMDES1_01 = dr["PMDES1_01"].ToString();
PRTNUM_10 = dr["PRTNUM_10"].ToString();
DESCRPTN_104 = dr["DESCRPTN_104"].ToString();
ORDREF_10 = dr["ORDREF_10"].ToString();
TNXDTE_01 = dr["TNXDTE_01"].ToString();
}
//close connections
dr.Close();
con.Close();
return new List<string> { PMDES1_01, PRTNUM_10, DESCRPTN_104, ORDEF_10 };
}
}
如何将此字符串作为字段,以便我可以在infopath表单字段中使用它们?
答案 0 :(得分:0)
在Visual Studio中,单击File
菜单,然后单击New
并选择Project
。然后在ASP.NET Empty Web Application
中找到Web
。给它一个合理的名称然后点击OK
。在解决方案资源管理器中,右键单击解决方案下的新项目,单击Add
并选择New Item
并在Web Service
中找到Web
。将其命名为Data.asmx
,然后点击Add
。然后,您应该看到新Web服务Data
类背后的代码。
现在,您可以声明自己的类来表示数据库记录,例如请参阅下面的class Record
。然后,通过调用Record
上的Get * Type *()方法,在GetData()
方法中创建SqlDataReader
的实例。您需要查看数据库列上的数据类型并调用适当的方法,例如GetString()
,GetInt32()
等......
class Data : System.Web.Services.WebService
{
public class Record
{
public string AccountType { get; set; }
public string PartDescription { get; set; }
public int PartNumber { get; set; }
public string OrderRef { get; set; }
public DateTime TransactionDate { get; set; }
}
[WebMethod]
public static List<Record> GetData(string param)
{
SqlConnection con = new SqlConnection(@"ConnectionString");
con.Open();
SqlCommand cmd = new SqlCommand("SELECT type,desc,num,ref,date FROM foo", con);
SqlDataReader dr = cmd.ExecuteReader();
List<Record> records = new List<Record>();
while (dr.Read())
{
records.Add(new Record() {
AccountType = dr.GetString(0),
PartDescription = dr.GetString(1),
PartNumber = dr.GetInt32(2),
OrderRef = dr.GetString(3),
TransactionDate = dr.GetDateTime(4)
});
}
dr.Close();
con.Close();
return records;
}
}
提示:最好通过cmd.Parameters
集合向查询添加参数,而不是使用字符串连接。
现在,您应该能够运行或部署Web服务并获取其WSDL的URL。有关从InfoPath调用的示例,有一个很好的walk-through here。