Sapui5 如何从sap.ui.table.table中的输入中获取值?

Sapui5 如何从sap.ui.table.table中的输入中获取值?,sapui5,sap-fiori,Sapui5,Sap Fiori,在sap.ui.table.table中,我在一列中有一个输入字段。它将从后端获得近300条数据记录,并绑定到其他列中 用户在输入字段中手动输入。此外,当他点击submit按钮时,我必须从所有输入中获取所有值作为数组。请给出建议。您可以使用表的数据绑定来实现,因为在这种情况下,调用表控件上的getRows()来访问每行的输入字段将没有帮助;它只返回当前可见的行,您可以访问大约300条记录 以下是解决方案: 在JSONModel中从后端获取所有数据 通过迭代将一个属性(比如inputValue)添

sap.ui.table.table
中,我在一列中有一个输入字段。它将从后端获得近300条数据记录,并绑定到其他列中


用户在输入字段中手动输入。此外,当他点击submit按钮时,我必须从所有输入中获取所有值作为数组。请给出建议。

您可以使用表的数据绑定来实现,因为在这种情况下,调用
控件上的
getRows()
来访问每行的
输入
字段将没有帮助;它只返回当前可见的行,您可以访问大约300条记录

以下是解决方案:

  • JSONModel
    中从后端获取所有数据
  • 通过迭代将一个属性(比如inputValue)添加到模型数据中的每个项
  • 将此模型绑定到表,并使用表模板中的inputValue属性绑定包含
    Input
    字段的列
  • 由于
    JSONModel
    支持双向绑定,用户在
    Input
    字段中输入的所有值在您的模型中都可用

    最后,迭代模型的数据以获得每行的inputValue

    上述行动步骤:

    步骤1和2:

    setModelForTable: function() {
        var oModel = sap.ui.model.json.JSONModel( < URLToLoadJSON > );
        var length = oModel.getData().results.length;
    
        for (var i = 0; i < length; i++) {
            var path = "/results/" + i + "/inputValue";
            oModel.setProperty(path, "");
        }
    }
    
    最后,获取数组中所有输入的值

    var length = oModel.getData().results.length;
    var aInputvalues = []
    for (var i = 0; i < length; i++) {
        var path = "/results/" + i + "/inputValue";
        aInputvalues.push(oModel.getProperty(path));
    }
    
    var length=oModel.getData().results.length;
    var aInputvalues=[]
    对于(变量i=0;i
    您可以使用表的数据绑定来实现,因为在这种情况下,调用
    表的
    控件上的
    getRows()
    来访问每行的
    输入
    字段是没有帮助的;它只返回当前可见的行,您可以访问大约300条记录

    以下是解决方案:

  • JSONModel
    中从后端获取所有数据
  • 通过迭代将一个属性(比如inputValue)添加到模型数据中的每个项
  • 将此模型绑定到表,并使用表模板中的inputValue属性绑定包含
    Input
    字段的列
  • 由于
    JSONModel
    支持双向绑定,用户在
    Input
    字段中输入的所有值在您的模型中都可用

    最后,迭代模型的数据以获得每行的inputValue

    上述行动步骤:

    步骤1和2:

    setModelForTable: function() {
        var oModel = sap.ui.model.json.JSONModel( < URLToLoadJSON > );
        var length = oModel.getData().results.length;
    
        for (var i = 0; i < length; i++) {
            var path = "/results/" + i + "/inputValue";
            oModel.setProperty(path, "");
        }
    }
    
    最后,获取数组中所有输入的值

    var length = oModel.getData().results.length;
    var aInputvalues = []
    for (var i = 0; i < length; i++) {
        var path = "/results/" + i + "/inputValue";
        aInputvalues.push(oModel.getProperty(path));
    }
    
    var length=oModel.getData().results.length;
    var aInputvalues=[]
    对于(变量i=0;i
    我有一个有点类似的案例,我是按照以下方式做的。如果您真的不需要未更改的记录,则可以使用

  • 有一个变量来存储[]个已更改的记录
  • 将更改附加到输入字段
  • 更改时将更改的记录推送到变量

    var source = event.getSource();
    source.getModel().getProperty(source.getBindingContext().getPath()); 
    
  • 或输入字段的值

        event.getSource().getValue();
    
    如果您有一个记录Id,您只需按此Id和输入值即可。
    4.在提交时,通过[]

    迭代,我遇到了一个有点类似的情况,我按照以下方式进行了操作。如果您真的不需要未更改的记录,则可以使用

  • 有一个变量来存储[]个已更改的记录
  • 将更改附加到输入字段
  • 更改时将更改的记录推送到变量

    var source = event.getSource();
    source.getModel().getProperty(source.getBindingContext().getPath()); 
    
  • 或输入字段的值

        event.getSource().getValue();
    
    如果您有一个记录Id,您只需按此Id和输入值即可。
    4.在提交时,请通过[]

    Hi-dopedev进行迭代,谢谢您的建议。你能详细解释一下吗?请给我点时间!谢谢你,多普捷夫。我用的是sap.m.InputThank,你用的是dopedev。嘿,还有一个建议,当用户单击提交按钮并显示一个消息框,其中一个字段为空时,如何验证所有用户输入是否为非空???请将其作为单独的问题发布,因为在此处回答将超出上述问题的范围,另外,sap.ui.table.table的需求也有点棘手,需要在dopedev中解决,谢谢您的建议。你能详细解释一下吗?请给我点时间!谢谢你,多普捷夫。我用的是sap.m.InputThank,你用的是dopedev。嘿,还有一个建议,当用户单击提交按钮并显示一个消息框,其中一个字段为空时,如何验证所有用户输入是否为非空???请将其作为单独的问题发布,因为在此处回答将超出上述问题的范围,另外,sap.ui.table.table的需求有点棘手,需要解决