You may add another attribute to the itemRow ;):
row.Attributes["onclick"] = string.Format("window.location = '{0}';", ResolveClientUrl(string.Format("~/Default.aspx?userId={0}", e.Item.DataItem)) );
Instead to using e.Item.DataItem
you may cast DataItem to concrete class and use that class property like this:
MyClass mc = e.Item.DataItem as MyClass;
row.Attributes["onclick"] = string.Format("window.location = '{0}';", ResolveClientUrl(string.Format("~/Default.aspx?userId={0}", mc.UserId)) );
Generally, you may add attributes on row in repeater's ItemTemplate without server-side code. All that you need it's just to bind appropriate fields from your datasource to attributes:
<ItemTemplate>
<tr onmouseover="window.document.title = '<%# Eval("userId", "Click to navigate onto user {0} details page.") %>'"
onclick='window.location = "<%# ResolveClientUrl( "~/Default.aspx?userId=" + Eval("userid") ) %>"'>
<td>
<%# Eval("UserId") %>
</td>
</tr>
</ItemTemplate>