error convertir tipo de datos

Obtengo la identificación de la URL y la paso a sqldatasource - selectcommand y aparece el siguiente error:

Conversion failed when converting the varchar value '<%=MyIdVal%>'
 to data type int.

código detrás :

Public Partial Class Edit
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles    Me.Load
    MyIdVal = Request.QueryString("id")
End Sub

Private _myIdVal As Integer

Public Property MyIdVal() As Integer
    Get
        Return _myIdVal
    End Get
    Set(ByVal value As Integer)
        _myIdVal = value
    End Set
End Property

Clase final

cliente:

 < head runat="server">
<title></title>
  </head>
  <body>
<form id="form1" runat="server">
<div>
<%=MyIdVal%>
</div>
<asp:GridView ID="GridView1" runat="server" DataSourceID="myIdDataSource">
</asp:GridView>
<asp:SqlDataSource runat="server" ID="myIdDataSource" 
    ConnectionString="<%$  ConnectionStrings:myCipConnection  %>" 
    ProviderName="<%$ ConnectionStrings:myCipConnection.ProviderName %>"
    SelectCommand="SELECT * FROM books WHERE id = '<%=MyIdVal%>'" >  

    </asp:SqlDataSource>

</form>
  </body>
  </html>

el código funciona bien cuando lo codifico alguna idea de cómo solucionar este error gracias

preguntado el 22 de mayo de 12 a las 17:05

1 Respuestas

No se puede utilizar <%= %> sintaxis en el comando de selección. Debe usar un parámetro en la consulta y agregar un parámetro a la colección SelectParameters de la fuente de datos como:

<asp:SqlDataSource runat="server" ID="myIdDataSource" 
  ConnectionString="<%$  ConnectionStrings:myCipConnection  %>" 
  ProviderName="<%$ ConnectionStrings:myCipConnection.ProviderName %>"
  SelectCommand="SELECT * FROM books WHERE id = @id">
     <SelectParameters>
         <asp:QueryStringParameter Name="id" Type="Int32" DefaultValue="1" />
     </SelectParameter>
</asp:SqlDataSource>

contestado el 22 de mayo de 12 a las 17:05

si me dices cómo configurarlo te lo agradezco mucho - Mina gabriel

+1: Oh, Brian, no vi la edición que hizo que mi respuesta fuera una copia :) - naveen

Corrección de @MinaGabriel, no necesita configurarlo de forma programable; trae el valor de la cadena de consulta para usted automáticamente. - Brian Mains

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.