javascript - Embedding Advanced Find View in Entity Form (Crm 2011) -
we making system work on list of records based on 'fetch xml' user specify. (simple fetchxml field)
to make easy want nice ui edit 'fetch xml'.
we saw this solution - crm 4.
is there similar crm 2011?
// javascript source code function searchcustomers() { var params = ''; var fullname = xrm.page.getattribute("fullname").getvalue(); if (fullname != null) { params += "fullname" + getparam(fullname); } var iframe = xrm.page.ui.controls.get("iframe_advancedfind"); var url = getserverurl() + "/webresources/new_advancedfind.htm?data=" + params; iframe.setsrc(url); } function getparam(data) { return "%3d" + encodeuricomponent(data) + "%26"; } function getserverurl() { //var context = getglobalcontext(); //var serverurl = context.getclienturl(); var serverurl = window.location.protocol + "//" + window.location.host + "/" + xrm.page.context.getorguniquename(); if (serverurl.match(/\/$/)) { serverurl = serverurl.substring(0, serverurl.length - 1); } return serverurl; }
// new_advancedfind.htm webresource
<html><head><title></title> <script type=text/javascript src="clientglobalcontext.js.aspx"></script> <script type=text/javascript> function submitform() { var fullname = ""; var vals = getdataparam(); fullname = getparam(vals, 'fullname'); var filter = '<filter type="and"> <condition attribute="fullname" value="%' + fullname + '%" operator="like"/> <condition attribute="statecode" value="0" operator="eq"/> </filter>'; var fetch = '<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"><entity name="contact"><attribute name="fullname"/><attribute name="telephone1"/><attribute name="contactid"/><order attribute="fullname" descending="false"/>' + filter + '</entity></fetch>'; var form = document.getelementbyid("advancedfind"); form.action = getserverurl() + '/advancedfind/fetchdata.aspx'; form.layoutxml.value = '<grid name="resultset" object="2" jump="lastname" select="1" icon="1" preview="1"><row name="result" id="contactid"><cell name="fullname" width="300" /><cell name="telephone1" width="125" /></row></grid>'; form.fetchxml.value = fetch; form.submit(); } function getserverurl() { //var context = getglobalcontext(); //var serverurl = context.getclienturl(); var serverurl = window.location.protocol + "//" + window.location.host + "/" + xrm.page.context.getorguniquename(); if (serverurl.match(/\/$/)) { serverurl = serverurl.substring(0, serverurl.length - 1); } return serverurl; } function getdataparam() { //get query string parameters , load them //into vals array var retvals = new array(); var vals = new array(); if (location.search != "") { vals = location.search.substr(1).split("&"); (var prmcounter = 0; prmcounter < vals.length; prmcounter++) { vals[prmcounter] = vals[prmcounter].replace(/\+/g, " ").split("="); } //look parameter named 'data' var found = false; (var _prmcounter = 0; _prmcounter < vals.length; _prmcounter++) { if (vals[_prmcounter][0].tolowercase() == "data") { retvals = parsedatavalue(vals[_prmcounter][1]); } } } return retvals; } function parsedatavalue(datavalue) { if (datavalue != "") { return decodeuricomponent(datavalue).split("&"); } } function getparam(vals, attribute) { var val = ''; var found = false; (i = 0; < vals.length && !found; i++) { if (vals[i].indexof(attribute) > -1) { val = vals[i].split('=')[1]; found = true; break; } } return val; } </script> <meta charset=utf-8></head> <body onload=submitform()> <form id="advancedfind" method="post" action=""> <input name=fetchxml type=hidden> <input name=layoutxml type=hidden> <input name=entityname value=contact type=hidden> <!--replace defaultadvfindviewid valu contact's default advanced find view guid--> <input name=defaultadvfindviewid value={00000000-0000-0000-00aa-000000666400} type=hidden> <input name=viewid value={00000000-0000-0000-00aa-000000666400} type=hidden> <input name=viewtype value=4230 type=hidden> <input name=sortcol value=fullname:1; type=hidden> <input name=uiprovider type=hidden> <input name=dataprovider type=hidden> </form></body></html>
Comments
Post a Comment