You are not reasoning why one should put multiply values in one cell, but even without that it is clear that this code will not do it...
dtCurrentTable.Rows[i - 1]["Col4"] = ddlTables.SelectedItem.Text;
dtCurrentTable.Rows[i - 1]["Col4"] = ddlColumns.SelectedItem.Text;
dtCurrentTable.Rows[i - 1]["Col4"] = ddlShowFields.SelectedValue;
dtCurrentTable.Rows[i - 1]["Col4"] = TextDdlFields.Text;
As a developer you have to understand that these four lines are updating the very same cell, so the final value will be the result of the last line of the four...
To concatenate values you may do something like this:
dtCurrentTable.Rows[i - 1]["Col4"] = ddlTables.SelectedItem.Text;
dtCurrentTable.Rows[i - 1]["Col4"] += ddlColumns.SelectedItem.Text;
dtCurrentTable.Rows[i - 1]["Col4"] += ddlShowFields.SelectedValue;
dtCurrentTable.Rows[i - 1]["Col4"] += TextDdlFields.Text;
It is obvious that this approach totally unacceptable as the values are mixed without any possible way to retrieve them...
And now we come to the why! Why?! There is no reason to do such a thing you asked for...
1. If the data for display, than you are creating a pre-defined look-and-feel that can not be changed according to the medium on which it displayed
2. If the data for computation, than the concatenated data can not be used anymore as it lost it's original meaning of the part...
It is a pure case of the 'The whole is
greater much less than the sum of its parts'...