When migrating data between Sharepoint farms, use impersonation

ASP.NET impersonation allows the ASP.NET code to run as different users.

If you use only one account to migrate data between SharePoint farms, all the records will eventually be marked as modified by that account.
By using impersonation, you will be able to retain user history.

Open a popup window while sending post data

It’s actually very simple. It’s possible to create a form element and set the target to _blank so that upon submission the target will be opened in a new browser window/tab.
Use hidden input elements to pass data to the target URL.

<form action=”<target URL>” method=”POST” target=”_blank”>
  <input type=”hidden” name=”Name” value=”Wayne”>
  <input type=”submit” value=”Click here to open the window”>
</form>

If  you don’t want a button, use CSS to style the submit button to make it look like a hyperlink.

If you use ASP.NET or SharePoint the framework may complain that there should be only one form tag in the page. In that case use Javascript to construct the form on the fly when the link is clicked, then get rid of the form element after the window is open.

function openWindow()
{
var mapForm = document.createElement(“form”);
mapForm.style.display=”none”;
mapForm.target = “Map”;
mapForm.method = “POST”; // or “post” if appropriate
mapForm.action = “http://localhost:55079/Default.aspx”;

var mapInput = document.createElement(“input”);
mapInput.type = “text”;
mapInput.name = “test”;
mapInput.value = “Test Data”;
mapForm.appendChild(mapInput);

document.body.appendChild(mapForm);

map = window.open(“”, “Map”, “status=0,title=0,height=600,width=800”);

if (map) {
mapForm.submit();
}
//delete the form element
mapForm.parentNode.removeChild(mapForm);
}

<a href=”#” onclick=”javascript:openWindow();”>Click here to open window</a>

RequiredFieldValidator and DropDownList intial value

The RequiredFieldValidator complains if the value of the dropdown list is unchanged even though you may have some default value set programmatically.

To solve this, set InitialValue to the required field validator.

If you set a default value to a dropdown list and then disable the dropdown list, the validator will not work correctly. Use a hidden field and use javascript to update it every time the dropdown list’s value is changed, then configure the validator to check the hidden field instead.

Parse and send Microsoft JSON Date using Javascript

use the following code

var date = new Date(parseInt(jsonDateString.substr(6)));

To pass the date back to the ASP.NET server to deserialize, note that JSON.stringify will escape the slashes in the date values causing parse error in the server. To correct this, use the code below
(shttp://stackoverflow.com/questions/11852432/using-net-javascriptserializer-deserialize-with-datetime-from-client)

function customJSONstringify(obj) {
    return JSON.stringify(obj).replace(//Date/g, "/Date").replace(/)//g, ")/")
}

UpdatePanel in Sharepoint

Apparently UpdatePanel doesn’t work in SharePoint because reasons.

To get it to work, you have to jump through hoops by downloading the SharePoint guidance library thingy as some source code and build it yourself, then deploy it to the GAC of your environment, then add reference to Microsoft.Practice.SPG.AjaxSupport.dll, then use a SafeScriptManager in the usercontrol of your SharePoint webpart.

Maybe it’s better to build the thing using pure HTML and javascript?

Cannot get workflow to trigger event receiver

Change the sequence number of the receiver in Elements.xml to a lower value so that the receiver will run before the workflows?

Another way is to actually update the list item inside the workflow, usually assigning the same value to the field will work and results in no change to the list item.

Please note that workflow status is set asynchronously, meaning if you make the workflow trigger the event receiver and inside event receiver you read the workflow status, the workflow status is not guaranteed to be correct at the time as the update happens asynchronously.

The best way to read the eventual workflow status is to write it to a list item’s field and read from there in the event receiver.

Disable button on submit using javascript to prevent double clicking

Disable button on submit instead of onclick

Use this code?

Button is not firing postBack because you have disabled this. The approach to avoid multiple postBack is to have two buttons side by side. Real and dummy. On first click hide/delete the real button and show the dummy one
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" ClientIDMode="Static" OnClientClick="disableButton();"/>

<asp:Button ID="ButtonDummy" runat="server" Text="Button" ClientIDMode="Static" OnClientClick='return false;' style="display:none;"/>
and JS:
function disableButton() {

 $("#Button1").hide();

 $("#ButtonDummy").show();

 return true;
 }
shareimprove this answer