I adding some customization field in CA304000 ( Finance ->Cash Managerment -> Transaction) but these text field automaticaly disable.
Can you guy help me please ?!
Looking at the CATranEntry graph in CAAdj_RowSelected you will see the entire row is marked as enabled = false (PXUIFieldAttribute.SetEnabled(sender, adj, false);)
You need to extend this graph and CAAdj_RowSelected to enable your fields with similar logic found in the graph already. For example there is already a check for determining if the transaction is released:
PXUIFieldAttribute.SetEnabled<CAAdj.curyControlAmt>(sender, adj, adjNotReleased);
You will use this same syntax for your custom fields with something like this
PXUIFieldAttribute.SetEnabled<CAAdj.usrTNVName>(sender, adj, adjNotReleased);
Use the same logic found in the base graph for how adjNotReleased gets set and use it in your extension.
Related
How can I set fields to be updateable in the API but, read-only on the screen?
I have a view with a custom table defined in a Graph extension. I am using the (ViewName).AllowUpdate = false; on the RowSelected event of the primary DAC. This works fine to make all of the fields in the view disabled on the screen but, I can't update the fields in the API. Is there some way to detect that the graph is being used in the API versus the screen?
TIA!
What you can do is in the row selected event instead of affecting the restriction at cache level, which as you said affects the API as well, you can use the PXUIFieldAttribute to achieve the same scenario without affecting the API.
Ex: PXUIFieldAttribute.SetReadOnly([ViewName].Cache, null, [Condition or just set as true])
This will set all the fields in that view as readonly, without having to repeat the line for all the fields currently in the screen.
I had a similar requirement to allow edit on a custom field in Shipment graph only through API and not through UI.
You could use the Graph.IsContractBasedAPI method that returns true if the request came through contract based API as shown below:
PXUIFieldAttribute.SetEnabled<SOShipLineExt.usrBOLQty>(cache, e.Row, Base.IsContractBasedAPI);
I'm passing a parameter to a PowerApp through the calling URL called ID, i.e.
https://web.powerapps.com/apps/powerappid?ID=32
When the app launches I want it to jump from BrowseScreen1 which lists all the Business Cases and go straight to the Business Case with the matching ID (a field from a SharePoint list).
I'm brand new to PowerApps but pretty sure what I need to do is called Deep Linking and I found this tutorial https://powerapps.microsoft.com/en-us/blog/powerapps-deep-linking/ and having read the comments to the article I'm trying to apply it to the OnStart property of BrowseScreen1. I don't really understand how the navigation link in the tutorial is constructed so I'm sure I'm using the wrong Navigation parameters as it always launches the first record in the list ignoring anything to do with the ID. I'm using:
If(Not(IsBlank(Param("ID"))),Navigate(DetailScreen1,
None,{ID:LookUp('Full Business Case For Review'.ID, ID =
Value(Param("ID")))}))
'Full Business Case For Review' is the name of the Sharepoint list and ID is a unique field that gets assigned to each list item.
The tutorial doesn't mention having to change anything on the detail screen but I've also wondered if I need to perhaps change the item properties there as they are currently:
BrowseGallery1.Selected
I'm feeling out of my depth and would really appreciate some help on this!
Thanks,
John
Yes, you need to change the Item property in the detail screen. This is because there is currently no way to select an item in a gallery programmatically in PowerApps.
I normally get around this by using a global variable to store the current item, so you can set BrowseSreen1.OnStart to this
If(Not(IsBlank(Param("ID"))),
Set(CurrentItem, LookUp('Full Business Case For Review'.ID, ID = Value(Param("ID"))));
Navigate(DetailScreen1, None)
)
This will store the item with ID equal to your parameter as a record type variable.
You also need to change the OnSelect property of your BrowseGallery1's template or whichever control is used to navigate to the detail screen. It will need to be something like this
Set(CurrentItem, ThisItem); Navigate(DetailScreen1, None)
Finally set the Item property in the detail screen simply to this
CurrentItem
I am new to CRM, and I have run into a requirement where I have to show some controls (textbox, option set, etc) and custom entities (sub - grid) as readonly. But, when I made them readonly, they appears like disabled and are getting grayed out. Is there any way to make them only read only not look like disabled?
Please suggest.
Thanks,
Ashfaq.
in CRM read-only means fields are greyed out but still they are readable.
If you want to make the fields visible as normal but don't want them to be editable by the user, you need to write JavaScipt for that.
Take the following steps.
1. Make the fields editable.
2. On form's OnSave Event, call the following method to prevent the attributes to be saved.
function PreventSave()
{
Xrm.Page.getAttribute(“CRMFieldName”).setSubmitMode(“never”);
}
It will not grey out the fields and still prevent the user to change their values.
I hope it will help you.
For text fields, there is one type of text field that when set to readonly does not look like it is disabled. Off the top of my head I can't remember which type. For the other field types I have not found a way to not have them look disabled when made readonly.
Other option is not to use form fields but show the data you need to be readonly (and not grayed out) in a web resource (HTML/SL/etc). Be aware tho that if your users are using outlook with crm addin, there are limitations here when the record is viewed in the outlook reading pane.
Only other option I can think of is to not set the fields as readonly but control any field data changes with javascript.
In short, I haven't found a good way to do what you need.
I customize the campaign form and i face the some problem
1.How to customize the name "GENERAL".i need the name instead of GENERAL .Where to change?or which property should i change?
2.cant delete Lock symbol fields if we try , its saying "It is allowed only for business units".How to unlock and How to delete this?
As Guido suggests, double you can edit the name of the tab by opening up the form in the form editor, double clicking on the tab, and changing the label.
As far as the locked field, you'll have to mark the field as not required, in the entity customization, publish your changes, then you can delete the field from the form.
The label for any tab can be changed by the form editor, if you want a dynamic value you can set using supported customization as this example:
var firstTab = Xrm.Page.ui.tabs.get(0);
firstTab.setLabel("new tab name");
If a field is locked, it means that is business required (in your case is the name of the campaign that must be filled), you can always hide the field and pre-fill the value using javascript code inside onload, onchange or onsave events.
Perhaps someone else can suggest a better (i.e. supported) solution but until then - why not find out the id of those elements and edit them directly from JS in onload? Let me repeat, though, that such an operation is unsupported.
I have defined a new content type (document) for sharepoint. The problem I have is that word automatically comes up with window allowing updating of these properties (for example effective date) that is not validated and I don't want it to show when the user is uploading changes (I fill in some of these fields on the updated method in the eventreceiver class). Is it possible to disable this or at least customize the word behavior?
You can create your own Document Information Panels: http://msdn.microsoft.com/en-us/library/bb684925.aspx.
Another alternative might be to set the ShowInNewForm/ShowInEditForm properties of the SPField. But im not sure if Word uses them.