views:

324

answers:

2

I'm using ASP.NET user controls. I'm passing values to another user control via command arguments through a link button as follows:

asp:LinkButton ID="ZoomPhotoLinkButton" CommandArgument='<%#(Eval("conid"))%>' CommandName="PassItemId" runat="server">Zoom It

What I really want is to make the entire background cell of my table clickable, so that a click anywhere on the table cell would pass the appropriate CommandName and CommandArgument and link appropriately.

Before I had this set up with delegates, I had the above behavior working as follows with simple JavaScript and inline codehind functions passing URLs to inline JavaScript:

(I'm using square brackets rather than angle brackets because StackOverFlow's trying to parse my "table code"):

[td] onclick="window.location='<%# FormatDetailPageUrl((object)Eval("conid"))%>'" style='cursor:pointer;text-align: center; border:0px;'[/td]

I'm trying to do something functionally equivalent in terms of the click on the table cell, except to invoke the approprate CommandName and CommandArgument vs. simple Javascript.

Thanks in advance...

A: 

ASP.Net uses the __doPostBack() function to do this magic. You can call it yourself; the first parameter is the eventTarget, second param is eventArgument.

So in your case, you can do the following:

<td onclick="__doPostBack('PassItemId', '<%#(Eval("conid"))%>')"></td>

You might also want to take a look at Page.GetPostBackEventReference

Nicholas H
Thanks, Nicholas, this is definitely on the right track. The code that you provide above doesn't work exactly: I do get a postback, but my values don't appear to be being passed to load the detail page. It may be a consequence of the fact that the cells are in a user control, and that's tripping things up. I'll do more reading and see if I can't get this working. Thanks again.
kendor
Another thing that may be tripping me up: I'm trying to invoke this behavior inside of a GridView template...
kendor
A: 

You can probably achieve this client-side, e.g. using jQuery.

Have a look at this article, which does the same (with DIVs instead of TDs): http://newism.com.au/blog/post/58/bigtarget-js-increasing-the-size-of-clickable-targets/

M4N