项目架构: WindowsForm - WCF服务 - SQLite数据库
目的: 我想要退回要求的汽车'详细信息从数据库,通过服务器(使用REST)到客户端的DataGridView。
问题: 目前我将XML字符串返回到一个文本框,其中包含我想要的详细信息......
<GetCarByIdResponse xmlns="http://tempuri.org/"><GetCarByIdResult>
<xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Car2" msdata:UseCurrentLocale="true">
<xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="Car2"><xs:complexType><xs:sequence>
<xs:element name="CarID" type="xs:long" minOccurs="0"/><xs:element name="Make" type="xs:string" minOccurs="0"/>
<xs:element name="Model" type="xs:string" minOccurs="0"/><xs:element name="Year" type="xs:long" minOccurs="0"/>
</xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType> </xs:element></xs:schema>
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<DocumentElement xmlns=""><Car2 diffgr:id="Car21" msdata:rowOrder="0"> <CarID>2</CarID>
<Make>Toyota</Make><Model>Corolla</Model><Year>2007</Year></Car2> </DocumentElement></diffgr:diffgram></GetCarByIdResult></GetCarByIdResponse>
但我无法找到将此信息放入DataGridView的方法。我没试过XMLReader
,XDocument
,dgCar.DataBind();
。我对此非常陌生,所以任何指针都非常感激。在下面找到我的代码。提前谢谢。
服务器端代码:
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.WrappedResponse , UriTemplate = "/GetCarById/{value}")]
DataTable GetCarById(string value);
//////////////////////////////////////
public DataTable GetCarById(string value)
{
string connectionPath = @"Data Source=C:\SQLite\Car2.sqlite;Version=3;";
SQLiteConnection connection = new SQLiteConnection(connectionPath);
{
connection.Open();
string SQL = "SELECT * FROM Car2 where CarID =" + value;
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = connection;
cmd.CommandText = SQL;
cmd.ExecuteNonQuery();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
DataTable dt = new DataTable("Car2");
adapter.Fill(dt);
return dt;
connection.Close();
客户端代码:
private void btnGetCar_Click(object sender, EventArgs e)
{
HttpClient client = new HttpClient();
HttpResponseMessage wcfResponse = client.GetAsync("http://localhost:56328/Service1.svc/GetCarById/" + txtShowCarById.Text).Result;
HttpContent stream = wcfResponse.Content;
var data = stream.ReadAsStringAsync();
txtRest.Text = data.Result;
}
答案 0 :(得分:0)
您可以使用ReadXml method
或datatable
的{{1}},然后将网格绑定到它。
dataset
您可以在以下链接中找到更多相关文档: