You should be able to use conventional data binding in your text columns, like so:
<asp:gridview id="gvPersons" runat="server" autogeneratecolumns="False" width="100px" xmlns:asp="#unknown">
<columns>
<asp:boundfield headertext="Name (long)" datafield="Name">
<asp:templatefield headertext="ID">
<itemtemplate>
<asp:combobox id="comboPresent" runat="server">
</asp:combobox>
</itemtemplate>
</asp:templatefield>
</asp:boundfield></columns>
</asp:gridview>
Then use a TemplateField column for the ComboBox.
To populate the combo box column you can subscribe to the RowDataBound event of the GridView control, and then set the value manually there by casting the inner control of the second column to a ComboBox and setting it accordingly.