Cita: es que añade una columna más a la tabla, y a mi me gustaría mostrar sólo las 2 columnas de la query y que una de ellas (especialidad_id) sea la que haga de hiperenlace.
Pues entonces haz ésto: (recuerda poner tu grid en autogenerar columnas en false

)
Cita: <Columns>
<asp:TemplateColumn HeaderText="Algun Título">
<ItemTemplate>
<asp:hyperlink id=Hyperlink1 runat="server" navigateurl='<%# DataBinder.Eval (Container.DataItem,"CODIGO", "pagina_destino.aspx?id={0}") %>' Text='<%# Container.DataItem("CODIGO") %>'>
</asp:hyperlink>
</ItemTemplate>
<asp:BoundColumn DataField="Registro" HeaderText="Registro"></asp:BoundColumn>
</columns>
..
Con ello ya tienes 2 columnas y la primera es el hyperlink con el texto del campo "CODIGO"
Cita: para llamar a estas 2 columnas como quiera y no con el nombre del campo de base de datos?
Pues ya lo estas haciendo.. desde tu query con el Alias..
Cita: string strsql ="select especialidad_id as CODIGO, registrado as REGISTRADO from especialidad ";
Salu2