Variable de paso SqlDataSource

Estoy tratando de pasar una variable a SelectCommand en SqlDataSource. Tengo este MyIdVal que debe pasarse.

Aquí está el código:

<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>

El código funciona bien si codifico la identificación, entonces, ¿cómo funciona esto?

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

pruebe SelectCommand="SELECT * FROM books WHERE id = <%= MyIdVal%>" -

me da este error ahora La conversión falló al convertir el valor varchar '<%=MyIdVal %>' al tipo de datos int. -

1 Respuestas

Aquí hay dos formas de hacerlo.

  1. Vincular el valor del parámetro a un control

    <selectparameters>
        <asp:controlparameter 
                name="MyIdVal" 
                controlid="DropDownListBooks" 
                propertyname="SelectedValue"/>
    </selectparameters>
    

2 . Utilizar el SqlDataSource.Evento de selección

protected void myIdDataSource_Selecting
    (object sender, ObjectDataSourceSelectingEventArgs e)
{
    e.InputParameters["MyIdVale"] = MyIdVal;
}

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

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