Yes!
Eval will look for the column in the query result. Just make sure that your query fetches the column after the join of tables.
UPDATE:
based on what you ask:
I do have a gridview with the following fields:
<asp:Label ID="Desc" runat="server" Text='<%# Eval("description") %>'/>
<asp:Label runat="server" ID="Type" Text='<%# Eval("description")%>'/>
The first field is fine and it gets the description from the first table, the second field needs to get the description from the inner joined table. My query looks like this:
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand("SELECT rank_distribution.rank_distribution_id,rank_distribution.description ,rank_distribution.amount,transaction_distribution.description FROM rank_distribution INNER JOIN transaction_distribution ON transaction_distribution.transaction_distribution_id = rank_distribution.transaction_distribution_id WHERE rank_distribution.rank_transaction_type_id = @rank_transaction_type_id", con);
cmd.Parameters.AddWithValue("@rank_transaction_type_id", Request.QueryString["rank_transaction_type_id"]);
All you need to do is to have alias of the column names such that there are two description columns clearly identifiable at the end.
Try:
<asp:Label ID="Desc" runat="server" Text='<%# Eval("RD_description") %>'/>
<asp:Label runat="server" ID="Type" Text='<%# Eval("TD_description")%>'/>
Query:
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand("SELECT rank_distribution.rank_distribution_id,rank_distribution.description as RD_description,rank_distribution.amount,transaction_distribution.description as TD_description FROM rank_distribution INNER JOIN transaction_distribution ON transaction_distribution.transaction_distribution_id = rank_distribution.transaction_distribution_id WHERE rank_distribution.rank_transaction_type_id = @rank_transaction_type_id", con);