Here are you options, do it in sql before you bring the data back with a sql statement like this...
SELECT RecordID, RepCompany,
Case IA When 1 Then 'X' Else null End,
Case NE When 1 Then 'X' Else null End,
Case MN When 1 Then 'X' Else null End,
Case WI When 1 Then 'X' Else null End,
Case SD When 1 Then 'X' Else null End,
Case ND When 1 Then 'X' Else null End,
Case MO When 1 Then 'X' Else null End,
Case KS When 1 Then 'X' Else null End,
Case AR When 1 Then 'X' Else null End
FROM MfgRepList WHERE (Mfg = @Mfg)
Or make the BoundColumn a TemplateColumn
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label runat="server" ID="lblIA" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
and then do this in the itemdatabound event
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
CType(e.Row.FindControl("lblIA"), Label).Text = IIf(e.Row.DataItem("IA"), "X", "")
'Repeat For All
End If
End Sub