当前位置: 首页 > 知识库问答 >
问题:

控件包含删除:未保存可见更改得网页

姜经武
2023-03-14
For Each objElement In objElementColl
ExtractedName = objElement.outerHTML
        
If InStr(ExtractedName, "NewPermit") > 0 Then
objElement.Checked = True
Set DropDown = objHTML.getElementById("ProjectFile-AccreditedCertifierId")
DropDown.selectedIndex = 1
objHTML.getElementsByName(ElementName)(0).Value = ValueCheck

所有工作和更改都显示在屏幕上。单击“保存”时使用:

Set objElementColl = objHTML.getElementsByClassName("btn")

For Each objElement In objElementColl
    ExtractedName = objElement.outerHTML
    
    If InStr(ExtractedName, "click: save, enable:") > 0 Then
        objElement.Click
        ExtractedName = 1
        Exit For
    End If
Next

它运行。问题是它没有保存上面三个部分的更改。

我所尝试的

>

  • 暂停我的代码并手动单击“保存”(相同问题)

    暂停我的代码,手动更改一个复选框并运行代码以保存(保存手动更改,但不保存编码的更改

    暂停代码并手动更改一个框并手动保存(只保存手动更改的框)

        <fieldset>
            <legend>Proposal</legend>
    
            <div class="col-xs-12 col-sm-8 col-md-6">
                <div class="row">
                    <div class="col-xs-2 form-group">
                        <label for="ProjectFile_ProposalLot">Lot</label><input class="form-control" data-bind="textInput: ProjectFile().ProposalLot" maxlength="100" name="ProjectFile-ProposalLot" type="text" />
                    </div>
                        <div class="col-xs-2 form-group" data-bind="visible: ProjectFile().StateId() != 7 && ProjectFile().StateId() != 5">
                            <label data-bind="text: ProjectFile().ProposalDpLabel()"></label>
                            <input class="form-control" data-bind="textInput: ProjectFile().ProposalDp" maxlength="100" name="ProjectFile-ProposalDp" type="text" />
                            </div>
    
    var ProjectFileEditViewModel=(function(){__extends(ProjectFileEditViewModel,ViewModel.Model);function ProjectFileEditViewModel(){ProjectFileEditViewModel.__super__.constructor.apply(this,arguments);};ProjectFileEditViewModel.prototype.fields=function(){return {"Id":new ViewModel.NumberField(0),"StateId":new ViewModel.NumberField(0),"DefaultOfficeAddressId":new ViewModel.ObservableField(),"Name":new ViewModel.ObservableField(),"ExistingApprovalDate":new ViewModel.DateField("DD/MM/YYYY"),"ProjectClosed":new ViewModel.ObservableField(),"ProposalAddress":new ViewModel.ObservableChildField(exports.AddressViewModel,this),"Zoning":new ViewModel.ObservableField(),"ProposalLot":new return ProjectFileEditViewModel;})();if(exports.ProjectFileEditViewModel==null)exports.ProjectFileEditViewModel=ProjectFileEditViewModel;
    
    Buildaform.model=new Buildaform.ProjectPageViewModel({ ... ,"ProposalLot":null .... }
    

    我不能公开发布网站地址或源代码。

  • 共有1个答案

    席弘图
    2023-03-14

    根据您的评论:

    问题似乎出在代码设置表单控件上,而不是出在单击save按钮的代码上。

    这似乎是一个与VBA无关的问题,而是与knockout的行为有关的问题--请参阅这篇文章。中肯的评论是:

    您的问题是ko在选中的绑定内部的click事件上订阅:

    那篇文章中的提问者遇到了与您类似的问题--他们试图选中一个复选框(以更改视图),但它既没有更新viewmodel,也没有更新底层模型本身。Knockout是一个MVVM框架。

    您的问题中暴露出的问题是,您的手动更改提交是因为您在浏览器中通过点击执行操作时执行了单击并更改,但您的编程方法只对表单控件进行更改,而不是先单击。

    那么,如何通过IE通过VBA自动化来解决这个问题呢?

    基于我在上面引用的帖子中的解决方案,加上这里的方法,我将危险下面的代码作为一个可能的解决方案,但请注意,它是未经测试的...

    基本上,您需要“单击”想要更改的表单元素,然后更新控件值。希望'clicking'位将意味着knockout viewmodel根据'change'进行更新,并且从那里,模型数据将被写入数据库(或其他):

    复选框示例:

    If InStr(ExtractedName, "NewPermit") > 0 Then
    // hopefully this will get knockout to apply the required binding before your change the value
    objElement.Click
    objElement.Checked = True
    

    下拉列表示例:

    Set DropDown = objHTML.getElementById("ProjectFile-AccreditedCertifierId")
    // hopefully this will get knockout to apply the required binding before your change the value
    Dropdown.Click
    DropDown.selectedIndex = 1
    

    希望有帮助-相当的3管问题!祝你好运.

     类似资料:
    • 问题内容: 我需要在ASP .Net应用程序中实现“未保存的更改”提示。如果用户修改了Web表单上的控件,并试图在保存之前导航离开,则将出现提示,警告他们尚未保存更改,并为他们提供取消并保留在当前页面上的选项。如果用户未触摸任何控件,则不应显示该提示。 理想情况下,我想用JavaScript实现此功能,但是在我开始滚动自己的代码之前,是否有任何现有的框架或推荐的设计模式来实现这一目标?理想情况下,

    • 无论我做什么,我都无法在响应中看到头cache-control。 设置 null 2日志 对于这两种配置,日志是相同的。 2.1请求 06-28 13:24:05.601:D/reverfit(1581):---->HTTP GET myUri 06-28 13:24:05.601:d/改装(1581):Cache-Control:public,Max-Age=640000 06-28 13:24

    • 我是Netbeans和Java的新手,对jpanels上的jlabel有一个问题。我有一个jTabbedPane,里面有一个jPanel。我在JPanel上有一个jLabel。我想将jLabel的可见性设置为false,但似乎不起作用。当我运行程序时,标签仍然可见。我不明白为什么。

    • 我正在尝试删除此df中的所有行,其中“DB Serial”列包含字符*: 我正在使用: 但我得到这个错误:

    • 我想镜像两个文件夹,但排除某些文件类型(例如js文件)。我可以用 /XF选项来做到这一点。 我遇到的问题是,如果目标文件夹中有一个带有js文件的Foo文件夹,但源文件夹中没有Foo文件夹,那么下面的robocopy命令将删除目标端的Foo文件夹以及其中的js文件。 机器人复制。exe d:\Source d:\Destination/E/PURGE/XF*。js/COPYALL/FFT 我想要的是

    • 问题内容: 我可以轻松删除子引用中的文件,但是如何从Firebase Storage中删除整个文件夹? 错误文件不存在。有任何想法吗? 问题答案: 长话短说,我们尚未实现递归(或文件夹)删除。 目前,我们建议将文件列表存储在另一个源(例如,实时数据库)中,并根据需要删除文件。您也可以在Firebase控制台(console.firebase.google.com)中执行这种删除。 将来,我们可能会