在default.aspx.cs中,我定义了一个公共变量。 = my_id
我可以在我的aspx页面中使用这个变量。
但我不能在GridView DataSourceQuery中使用。
我的gridview的数据源代码:(在aspx中)
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:aspnetdbConnectionString %>" SelectCommand="SELECT [mus_ad], [marka], [model], [durum] FROM [servis_kayitlari] WHERE [kullanici_id] LIKE '<%= my_id ;%>'">
</asp:SqlDataSource>
在此数据源查询之后,gridview变为null。这个查询有什么问题?
答案 0 :(得分:0)
您应该使用参数化查询(请参阅Using Parameters with the SqlDataSource Control以供参考)并在SqlDataSource.Selecting
事件中指定参数值:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:aspnetdbConnectionString %>"
SelectCommand="SELECT [mus_ad], [marka], [model], [durum] FROM [servis_kayitlari] WHERE [kullanici_id] LIKE @my_id"
OnSelecting="SqlDataSourceSelectingEventHandler">
<SelectParameters>
<asp:Parameter Name="my_id" Type="Int32" DefaultValue="0" />
</SelectParameters>
</asp:SqlDataSource>
事件处理程序:
public void SqlDataSourceSelectingEventHandler(object sender, SqlDataSourceSelectingEventArgs e)
{
SqlDataSource1.SelectParameters["my_id"].DefaultValue = this.my_id;
}
答案 1 :(得分:0)
正如在其他答案中所建议的那样,您应该选择使用参数化查询,但根据您发布的查询,问题在于使用LIKE
绑定变量。您需要删除;
中的<%= my_id ;%>
。您的查询应该看起来像
SELECT [mus_ad], [marka], [model], [durum] FROM [servis_kayitlari] WHERE [kullanici_id] LIKE '<%= my_id %>'"