问题描述
我试图在运行时用Json响应填充Dbgrid组件,以将结果显示为列表,但是我无法执行此过程,我添加了ClientDataSet和DataSource组件,我不太了解德尔福。
procedure TFConsultas.Button2Click(Sender: TObject);
var
URI:string;
sResponse: string;
codigo: string;
I: Integer;
Datos: TJSONValue;
begin
URI := 'http://localhost/E-commerce/rest/default/V1/products?searchCriteria[pageSize]=';
IdHTTP1.Request.CharSet := 'utf-8';
IdHTTP1.Request.Accept:= 'application/json';
IdHTTP1.Request.CustomHeaders.Add('Authorization:Bearer ' + FObtenerToken.token);
try
sResponse:=IdHTTP1.Get(URI+Edit2.Text);
codigo:= IdHTTP1.ResponseText;
except
on E: Exception do
ShowMessage('Error on request: '#13#10 + e.Message);
end;
Memo1.Text := sResponse;
Memo2.Text := codigo;
Datos := TJSonObject.ParseJSONValue(sResponse);
正确获取json,以下代码行不知道它们是否正常工作,并且可以创建行并分配Json的值,正如我提到的我对delphi不太了解,我试图通过代码和设计属性将组件关联起来,但是在执行表单时,dbgrid组件显示为空,有人可以帮助我并指出我的表现不佳或缺少,或者应该怎么做
for I := 0 to ClientDataSet1.FieldDefs.Count - 1 do
begin
case ClientDataSet1.FieldDefs[I].DataType of
ftString,ftWideString,ftMemo :
begin
ClientDataSet1.FieldByName(ClientDataSet1.FieldDefs[I].Name).AsString :=
Datos.TryGetValue(ClientDataSet1.FieldDefs[I].Name,Datos).ToString;
end;
ftSmallint,ftInteger,ftWord,ftLongWord,ftShortint :
begin
ClientDataSet1.FieldByName(ClientDataSet1.FieldDefs[I].Name).AsInteger :=
(Datos.GetValue(ClientDataSet1.FieldDefs[I].Name,Datos) as TJsonNumber).AsInt;
end;
ftFloat,ftCurrency :
begin
ClientDataSet1.FieldByName(ClientDataSet1.FieldDefs[I].Name).AsFloat :=
(Datos.GetValue(ClientDataSet1.FieldDefs[I].Name,Datos) as TJsonNumber).AsDouble;
end;
end;
ClientDataSet1.CreateDataSet;
DataSource1.DataSet:=ClientDataSet1;
DBGrid1.DataSource:=DataSource1;
end;
end;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)