One suggestion would be using GridTemplatecolumn with Label control and in the onclick event, check for whether the item is expanded or not. If the item is collapsed, then expand the item and change the Label text to "Hide" and vice versa. Hide the ExpandCollapse column as well.
Access the corresponding item and use the set_expanded() property to expand/collapse from client side.