【问题标题】:Empty listgrid record cause空listgrid记录原因
【发布时间】:2014-04-26 05:41:27
【问题描述】:

我的客户端代码如下,我将一些数据发送到服务器以打印输出。但是当它从服务器返回时,我得到一个空的 listgrid 记录。这是什么原因。

这是问题的屏幕截图

if (fieldName.equals("Approve"))
{
IButton button = new IButton();
button.setHeight(18);
button.setWidth(65);
button.setTitle("Approve");
button.addClickHandler(new ClickHandler()
{
    public void onClick(ClickEvent event)
    {
        DebugTools.print("SOID " + record.getAttribute("supplierOrderID") + " SODID" + record.getAttribute("sodID")+" sordID "+record.getAttribute("sordID"));
        approveProduct(record.getAttribute("supplierOrderID"), record.getAttribute("sodID"),record.getAttribute("sordID"));
    }

private void approveProduct(String supplierOrderID, String sodID, String sordID)
{
    Record record = new Record();
                                record.setAttribute("supplierOrderID", supplierOrderID);
                                record.setAttribute("sodID", sodID);
                                record.setAttribute("sordID",sordID);
                                historyGrid.addData(record, callback);

}

          DSCallback callback = new DSCallback()
{
    @Override
    public void execute(DSResponse response, Object rawData, DSRequest request)
    {
        Record[] records = response.getData();

        if (records != null && records.length > 0)
        {
                             Record record = records[0];
                             JavaScriptObject js = record.getJsObj();                            JSONObject json = new JSONObject(js);                          System.out.println("  records.length    " + records.length);                    for (int i = 0; i < records.length; i++)    {                       Record recordd = records[i];
                                            JavaScriptObject jss = recordd.getJsObj();
                                            JSONObject jsonn = new JSONObject(jss);
                                            System.out.println(jsonn.toString());
                                        }
                                    }
                                }
                            };

在服务器端,我的 add 方法现在非常简单,我只是打印从客户端收到的数据

public DSResponse add(DSRequest dsRequest) throws Exception
{
    DSResponse dsResponse = new DSResponse();
    Long user_idlong = SessionUtills.getSessionUser(dsRequest.getHttpServletRequest());

    System.out.println("sodID       " + dsRequest.getFieldValue("sodID").toString());
    System.out.println("PRODUCT APPROVED !!!!!!!!!!!!!" + " SUPPLIER ORDER ID " + dsRequest.getFieldValue("supplierOrderID").toString());
    return dsResponse;

}

我还附上了问题的截图

【问题讨论】:

  • 开发模式有异常记录吗?

标签: gwt smartgwt smartgwt-pro


【解决方案1】:

问题出在服务器端,您从那里将空的DSResponse 发送回客户端,因此在客户端您将获得零长度记录数组。

返回一个有效的DSResponse,包含新添加记录的所有信息。


请看一下

必读The basic flow of logic for handling DataSource requests

【讨论】:

  • 感谢您的 cmets。它很有帮助.. 现在按原样使用我的代码,只是想避免那个空记录,我需要做什么。感谢您的帮助。
  • 为什么不呢?请您告诉我您从客户端调用add() 方法的情况如何。
  • 数据库中是否添加了数据?你在使用ds.xml 文件吗?
  • 干杯!!...我有这个按钮,点击它会触发这个方法approveProduct(..)。在这个方法中,我有这个 addData 方法,它将请求发送到服务器..historyGrid.addData(record, callback);
  • 关于您的第二条评论。是的,我正在将数据添加到数据库中。但现在我只想在控制台中打印数据已更新但没有出现我在屏幕截图中显示的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多