Axapta 在AX 2012中创建带有对话框的按钮

Axapta 在AX 2012中创建带有对话框的按钮,axapta,x++,dynamics-ax-2012-r2,Axapta,X++,Dynamics Ax 2012 R2,我想做一个钮扣 我有一个EDT“辞职”,不能编辑,只能编辑一次,当我按下按钮时。 单击按钮时,将弹出一个对话框,我可以在其中键入日期 我想我得写一门课,但我很努力 致以亲切的问候 Khashayar您可以在按钮的单击方法中编写代码 下面是一个简单的工作: 要防止覆盖现有值,可以按以下方式修改方法: public void clicked() { Dialog dialog; DialogField dialog

我想做一个钮扣

我有一个EDT“辞职”,不能编辑,只能编辑一次,当我按下按钮时。 单击按钮时,将弹出一个对话框,我可以在其中键入日期

我想我得写一门课,但我很努力

致以亲切的问候


Khashayar

您可以在按钮的
单击方法中编写代码

下面是一个简单的工作:


要防止覆盖现有值,可以按以下方式修改方法:

public void clicked()
{
    Dialog                     dialog;
    DialogField                dialogDate;
    date                       newDate;    
    ;

    if (EmploymentTable.Resigning == dateNull())
    {
        dialog     = new Dialog("Set new date");
        dialogDate = dialog.addField(ExtendedTypeStr("YourEDTName"), "New date:");        
        if (dialog.run())
        {    
            newDate = dialogDate.value(); //Get value of new date.        
            //Here code to update your table                
        }
    }
    else
    {
        warning("Value already exists.");
    }
}
上面的代码在允许分配新值之前检查值是否已经存在


更好的方法是在值已经存在时禁用按钮。为此,编写一个方法来禁用/启用按钮,并在表单数据源的
active
方法中调用它。

我在最后一个if子句中添加了“EmploymentTable.Resigning=dialogDate.value();”。当我点击相同记录的按钮时,我仍然能够覆盖辞职日期。如何才能改变它,使我不能改变它,即使我再次点击按钮为同一记录。TTSBegin?,with if子句?,如果您对
EmploymentTable.update()
yes need
TTSBegin和ttsCommit
有错误。尝试此
从EmploymentTable中选择更新,其中…
然后
ttsbegin;EmploymentTable.update();TTS委员会不幸的是,我仍然有问题。所有代码都有助于我使用该按钮,但再次…在输入日期后,我仍然可以更改它。void clicked(){syclesigning resigning;syclemploymenttable EmploymentTable;Dialog Dialog;DialogField dialogDate;date NewDate;super();if(EmploymentTable.Resigning==dateNull()){dialog=new dialog(“设置新日期”);dialogDate=dialog.addField(ExtendedTypeStr(SycResigning),“new date:”);if(dialog.run()){newDate=dialogDate.value();//获取新日期的值//这里是更新表SycEmploymentTable.Resigning=dialogDate.value();}的代码,否则{警告(“值已存在”);}将代码划分为2个更可能用作表单中表单数据源的SycEmploymentTable。在这种情况下,不需要局部变量EmploymentTable。只需更改if语句:if(SycEmploymentTable.Resigning==dateNull())
其中
SycEmploymentTable
-您的数据源名称。
public void clicked()
{
    Dialog                     dialog;
    DialogField                dialogDate;
    date                       newDate;    
    ;

    if (EmploymentTable.Resigning == dateNull())
    {
        dialog     = new Dialog("Set new date");
        dialogDate = dialog.addField(ExtendedTypeStr("YourEDTName"), "New date:");        
        if (dialog.run())
        {    
            newDate = dialogDate.value(); //Get value of new date.        
            //Here code to update your table                
        }
    }
    else
    {
        warning("Value already exists.");
    }
}