2012-05-22 4 views
0

я получаю идентификатор из URL и передать его в SqlDataSource - SelectCommand я получаю следующее сообщение об ошибке:ошибка типа преобразования данных

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

код позади:

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 

End Class

клиент:

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

код работает нормально, когда я жестко кодирует его любая идея, как исправить эту ошибку, спасибо

ответ

2

Вы не можете использовать <%= %> синтаксис в команде выбора. Вы должны использовать параметр в запросе, и добавить параметр в коллекцию SelectParameters из источника данных, как:

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

, если вы скажете мне, как установить это я действительно оценил –

+0

+1: О Брайен, я не сделал см. редактирование, сделанное whgich, сделало мой ответ копией cat :) – naveen

+0

@MinaGabriel коррекция, вы не пытаетесь программировать ее; он автоматически вводит значение querystring. –

Смежные вопросы