aspx页面中的Asp.Net GridView数据源

时间:2014-08-03 19:02:36

标签: c# asp.net gridview

在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。这个查询有什么问题?

2 个答案:

答案 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 %>'"