CRM 2011 - Display all entities in option set - c#

I just started working with Dynamics CRM 2011 and need to do some tasks but I simply don't know how. Really hope you can help me with this.
I need to set the values for a picklist(option set) through code behind, it should display all published entities in the solution everytime the form of my custom entity is loaded.
I've searched the web and all I found was the next piece of code, but I absolutely have no idea what to do with is (yeah, I'm newbie, didn't you notice):
RetrieveAllEntitiesRequest req = new RetrieveAllEntitiesRequest();
req.EntityFilters = EntityFilters.Privileges;
req.RetrieveAsIfPublished = true;
RetrieveAllEntitiesResponse resp = (RetrieveAllEntitiesResponse)service.Execute(req);
I tried to do the same with some JScript samples I found on the SDK but I still couldn't manage to insert the values into the picklist. Please give a hint or something. Thanks.

In that case, I think, you should create an entity and put a lookup on form instead.
I've never seen using a picklist for dynamic data, I use them only for static.
They're like global enums.
But, they say about addOption at MSDN Xrm.Page.ui Control methods web page.
Have you tried this one?

Related

SalesForce - Get all the fields of an object using .Net SDK or Api

We have our system from where we want to push the records (e.g. Contact, Account, Opportunity, etc.) to SalesForce.
To achieve this, we have used ForceToolKit for .Net. We are able to insert\update the records successfully using the ForceToolKit functions.
Example:
dynamic contact = new ExpandoObject();
contact.FirstName = "FirstName";
contact.LastName = "Last";
contact.Email = "test#test.com";
contact.MobilePhone = "1234567890";
var successResponse = await forceClient.CreateAsync("Contact", contactList);
The Issue we are facing is as mentioned below.
In our source system, we have few custom fields which are not standard field in SalesForce and it can be different for different users.
So, first we have to map the custom fields between our source system and the SalesForce.
We want to fetch all the fields of SalesForce object in order to map the fields.
We are unable to find any function in ForceToolkitForNet.
As described here, we have tried QueryById function by using the dynamic return type, but it is throwing an exception.
var contactFields = await forceClient.QueryByIdAsync<dynamic>("Contact", successResponse.Id);
Exception: "SELECT FROM Contact where Id = '{contactId}' Incorrect syntax near FROM".
What are the ways to get the fields of any object of SalesForce.
Can anyone help us on getting the fields of an object using SalesForceToolkit or SalesForceApi?
SOQL doesn't have a SELECT * FROM Account concept, you need to learn the fields beforehand. You have few options here.
You can use "describe" calls. I've recently answered similar question but it was about REST API: https://stackoverflow.com/a/48436870/313628, I think your solution is SOAP-based.
If you'd be doing this by hand...
Start here: https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_list_describe.htm
List of all objects visible to your user: describeGlobal()
Get details (incl field names) for one object: describeSobject() or more: describeSobjects()
As you're using the toolkit - there's a chance these methods already are in there somewhere. Experiment a bit. Between the C# examples under the links I gave you and the library you should be able to figure something out.
I mean I'm naive but just searching the repo for "describe" looks promising: https://github.com/developerforce/Force.com-Toolkit-for-NET/search?utf8=%E2%9C%93&q=describe&type=, maybe this example
There's also a way to not learn this info at runtime but consume a WSDL file generated out of Salesforce with all fields & generate C# code out of it. The downside is that you'd need to regenerate it every time you want to support new object/field in your app. Read about "Enterprise WSDL" to get started.
Last but not least - there are more or less friendly tools that dump the Salesforce metadata. i'm a fan of https://www.datasert.com/products/realforce/ but just have a look around. Hell, even exporting some records with DataLoader will give you all field names if that's all you need.

extract data from webservice ?WSDL

my teacher gave me a url to a webservice of my school with the purpose of extracting some data to help me with a project im making. the thing is he doesnt want to tell me how i am supposed to extract the data from it. i know it has a lot of operations/methods or whatever it's called and i know it has something to do with xml. im doing a website in asp.net and c#.
i've been searching for some code but i dont really understand it.
NameoftheService.Service myservice = new NameofTheService.Service();
and to call the method/operation (example):
var abc = myservice.GetWeather(parameter);
but i cant get this thing to work. i've replaced the code above with correct information but it says could not execute query. i dont really know what to do
To bind grid in asp.net is as simple as binding it with object list. Consider the product service. So your code should be like...
ProductsService.DataSetWebService ws = new ProductsService.DataSetWebService();
GridView1.DataSource = ws.GetProducts();
GridView1.DataBind();
One of the properties of NameOfTheService.Service will be a DestinationURL or ServiceURL that you need to set.

How to refresh DataGrid?

I am working on Silverlight 5 and RIA Services for database operations. DataGrid showing data perfectly.
But when I delete a record and submit changes to database, database updating successfully, but DataGrid showing still old data. It is not refreshing.
I search on google and surprise to see that there is no simple answer and I am also surprise to see that microsoft has not provided this basic functionality in Silverlight.
It is not a good way by anymeans, but I have gotten around this by setting the DataGrid to null and the re-adding the data.
System.Collections.IEnumerable temp = yourGrid.ItemsSource;
yourGrid.ItemsSource = null;
yourGrid.ItemsSource = temp;
I do not like doing it this way but it works and for my purposes I have not noticed any performance hits.
Edit: I guess this may not work with a delete though, but worth a try
Have you tried to use an PagedCollectionView as ItemSource?
Something like:
DataGridMainTopic.ItemsSource = new PagedCollectionView(m_context.EntitySet);
or even:
DataGridMainTopic.ItemsSource = new PagedCollectionView(DataGridMainTopic.ItemsSource);

The riddle of the working broken query

I was going through some old code that was written in years past by another developer at my organization. Whilst trying to improve this code, I discovered that the query it uses had a very bad problem.
OdbcDataAdapter financialAidDocsQuery =
new OdbcDataAdapter(
#"SELECT a.RRRAREQ_TREQ_CODE,
b.RTVTREQ_SHORT_DESC,
a.RRRAREQ_TRST_DESC,
RRRAREQ_STAT_DATE,
RRRAREQ_EST_DATE,
a.RRRAREQ_SAT_IND,
a.RRRAREQ_SBGI_CODE,
b.RTVTREQ_PERK_MPN_FLAG,
b.RTVTREQ_PCKG_IND,
a.RRRAREQ_MEMO_IND,
a.RRRAREQ_TRK_LTR_IND,
a.RRRAREQ_DISB_IND,
a.RRRAREQ_FUND_CODE,
a.RRRAREQ_SYS_IND
FROM FAISMGR.RRRAREQ a, FAISMGR.RTVTREQ b
WHERE a.RRRAREQ_TREQ_CODE = b.RTVTREQ_CODE
and a.RRRAREQ_PIDM = :PIDM
AND a.RRRAREQ_AIDY_CODE = :AidYear ",
this.bannerOracle);
financialAidDocsQuery.SelectCommand.Parameters.Add(":PIDM", OdbcType.Int, 32).Value = this.pidm;
financialAidDocsQuery.SelectCommand.Parameters.Add(":AidYear", OdbcType.Int, 32).Value = this.aidYear;
DataTable financialAidDocsResults = new DataTable();
financialAidDocsQuery.Fill(financialAidDocsResults);
FADocsGridView.DataSource = financialAidDocsResults;
FADocsGridView.DataBind();
The problem is that the column a.RRRAREQ_TRST_DESC does not exist. A fact you learn very quickly when running it in Oracle SQL Developer.
The strange thing?
This code works.
The gridview binds successfully. (It doesn't try to bind to that field.) And it's been in production for years.
So, my question is...why? I've never seen a bad query work. I've never seen Oracle allow it or a data provider hack around it.
Does anyone have any idea what's going on here?
Hmmm...A few things to check:
Does this code actually run? It may seem silly to suggest this, but there may be a newer file that replaced this one.
Is an exception being squelched by your code? (Anyone who would name columns like that is definitely capable of squelching those pesky exceptions)
Is the exception being squelched by 3rd party code? (Not as likely, but sometimes 3rd party code prefers to use annoying error codes instead of exceptions).
Past those suggestions, I'm not sure.
EDIT:
Revisiting the 2nd point, if you are working in ASP.NET, check that there is no global-level exception handler that is squelching exceptions. I ran into that problem on one site that I worked on and found dozens of exceptions in a single day.
Try running
select * from v$sql where sql_fulltext like '%a.RRRAREQ_TRST_DESC%'
shortly after you bind the grid. That will tell you if the statement was actually seen by Oracle. Note that you should only see the above query if it was not seen by Oracle.
Use ODBC trace log to see if this query is really send to database, and see what database returns. Then use any other ODBC based database tool and check if this query work from this tool. As an ultimate test you can write simple Python script. Easiest way it to use ActiveState Python 2.x with odbc module included. Test code can look like:
import odbc
connection = odbc.odbc('dnsname/user/password')
cursor = connection.cursor()
cursor.execute("select ...")
for row in cursor.fetchall():
print '\t'.join([str(r) for r in row])
If there was no error in your program and an error in other tools then compare theirs ODBC traces.
If I understand what the original author was trying to do, and with Banner that is never easy to figure out, then this query should be correct:
SELECT a.rrrareq_treq_code,
b.rtvtreq_short_desc,
c.rtvtrst_desc,
rrrareq_stat_date,
rrrareq_est_date,
a.rrrareq_sat_ind,
a.rrrareq_sbgi_code,
b.rtvtreq_perk_mpn_flag,
b.rtvtreq_pckg_ind,
a.rrrareq_memo_ind,
a.rrrareq_trk_ltr_ind,
a.rrrareq_disb_ind,
a.rrrareq_fund_code,
a.rrrareq_sys_ind
FROM faismgr.rrrareq a,
faismgr.rtvtreq b,
faismgr.rtvtrst c
WHERE a.rrrareq_treq_code = b.rtvtreq_code
AND a.rrrareq_trst_code = c.rtvtrst_code
AND a.rrrareq_pidm = :PIDM
AND a.rrrareq_aidy_code = :AidYear;
Well, let's file this in the false alarm category.
I decided to have our VAT send a copy of the DLL from test. I pulled it apart with reflector and found, much to my embarrassment, that the query is right. Which makes sense.
I still can't figure out why my working copy would have one incorrect field_name. To my knowledge, I had never touched this file before this week. But, SVN doesn't have any history showing this error in previous versions.
So strange...maybe I'm losing my mind.
Thanks for all of the quality feedback on this question. I certainly learned some new trouble shooting techniques and for that I'm very appreciative. :)
Happy coding,
Clif

PeterBlum SelectedIndexCondition Not Equal functionality

Right now we are using the PeterBlum SelectedIndexCondition to control whether or not some controls are displayed using the following snippet:
PeterBlum.DES.MultiFieldStateController fsc = new PeterBlum.DES.MultiFieldStateController();
PeterBlum.DES.SelectedIndexCondition cnd2 = new PeterBlum.DES.SelectedIndexCondition();
cnd2.Index = desiredIndex
cnd2.ControlToEvaluate = ControlToEvaluate//ListBox, dropdown, etc
fsc.Condition = cnd2;
I'd like to be able to achieve this same functionality except to fire when the desired index IS NOT set. I cannot simply create a bunch of Conditions for each index other than the one I specify due to the way this is dynamically being done in my application.
Thanks in advance,
Ben
You will probably get better results if you post your question to Peter's Yahoo Forum. In my experience, he will get back to you very quickly with a good answer.

Categories