SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a custom DataFormWebPart that renders some content based on an XSLT. Inside the XSLT I have a button that does a postback like so:

<input type="button" value="..." name="..." 
       onclick="javascript: {ddwrt:GenFireServerEvent('__name')}" />

I don't really know how to treat this event at the server side and the docs I could find are not very useful.

How do I treat this on the server side - in the WebPart or (preferably) in the Page that contains my WebPart?

share|improve this question

It's interesting question. If you examine the code of RaisePostBackEvent method of DataFormWebPart class you will see the processing of such actionas as _connect, _update, _insert, _commit, _cancel, _refresh, _delete, _redirect and some others. For example on __redirect command DataFormWebPart executes the following code:

else if (this.DoesPostbackEqualEvent(str2, "__redirect", true, out modifiedCommandStr))

And the PerformRedirect function is defined as:

private void PerformRedirect(string commandSubString)
      if (this.DesignMode)
      SPUtility.Redirect(new Uri(HttpContext.Current.Request.Url, this.UnEscapeDelims(commandSubString)).AbsoluteUri, SPRedirectFlags.Trusted | SPRedirectFlags.DoNotEncodeUrl, this.Context);

It looks like you cannot define and process such "events" - it's only to instruct the DataFormWebPart what to do on postback. And finally it looks like you can parametrize used command.

As for workarounds on porocessing such events - I suppose these events can be handled on server side in traditional way for postbacks:

private void HandlePostback() {
  if (this.Page.Request["__EVENTTARGET"] == "__myCommand") {
    // do your processing

You can place such handler in custom webpart without UI and place it on the same page, for example.

share|improve this answer
up vote 0 down vote accepted

I've eventually added my code in the DataFormWebPart.PreprocessPostBackEvent method using custom action names that I then replace on method exit with __refresh.

It works for the particular case I'm having; might not work for everybody (in which case Alex Boev's answer might be useful).

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.