如何通过使用会话仅显示首选数据来使用 sqldatasource?
How to use sqldatasource by showing only preferred data using session?
我做sqldatasource的常用方法是这样的。通常以 table 格式显示所有论坛。
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:elibraryDBConnectionString %>"
SelectCommand="SELECT [forum_id], [forum_topic], [forum_description], [forum_status], [company_name], [replies_count], [publish_date], [publisher_name], [forum_img_link], [moderator_name] FROM [forum_accept_tbl]">
</asp:SqlDataSource>
但是,我不想显示所有论坛,而只想显示一个具有会话论坛 ID 的论坛。以下是对我不起作用的代码。
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:elibraryDBConnectionString %>"
SelectCommand="SELECT [forum_id], [forum_topic], [forum_description], [forum_status], [company_name], [replies_count], [publish_date], [publisher_name], [forum_img_link], [moderator_name] FROM [forum_accept_tbl] WHERE [Forum_id] = Session["Forum_id"]"></asp:SqlDataSource>
我尝试添加 WHERE,但它无法识别该会话。这是我的 forum.aspx 代码 btw。是否应该在 forum.aspx.cs 中进行更改?我对 asp.net 还是个新手,我认为这是一个简单的错误,但我希望我能学到更多。
EDITED CURRENT PROGRESS. 阅读一些有用的文件后建议。以下是我当前的进度以及它显示的当前错误。
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:elibraryDBConnectionString %>" SelectCommand="SELECT [forum_id], [forum_topic], [forum_description], [replies_count], [forum_img_link], [company_name], [publisher_name], [publish_date], [moderator_name] FROM [forum_accept_tbl] WHERE ([forum_id] = @forum_id)"> <SelectParameters> <asp:SessionParameter Name="forum_id" SessionField="forum_id" Type="Int32" /> </SelectParameters></asp:SqlDataSource>
<div class="col">
<asp:GridView class="table table-striped table-bordered" ID="GridView2" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" OnSelectedIndexChanged="GridView2_SelectedIndexChanged">
<Columns>
我检查了会话,它运行良好(使用正确的会话论坛 ID)。但是,在我 运行 它并单击 link 按钮之后,它显示以下错误:
说明:编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。
编译器错误消息:CS1061:'forum_aspx'不包含'GridView2_SelectedIndexChanged'的定义并且没有可访问的扩展方法'GridView2_SelectedIndexChanged'接受第一个可以找到 'forum_aspx' 类型的参数(您是否缺少 using 指令或程序集引用?)
来源错误:第 44 行
Line 42: <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:elibraryDBConnectionString %>" SelectCommand="SELECT [forum_id], [forum_topic], [forum_description], [replies_count], [forum_img_link], [company_name], [publisher_name], [publish_date], [moderator_name] FROM [forum_accept_tbl] WHERE ([forum_id] = @forum_id)"> <SelectParameters> <asp:SessionParameter Name="forum_id" SessionField="forum_id" Type="Int32" /> </SelectParameters></asp:SqlDataSource>
Line 43: <div class="col">
Line 44: <asp:GridView class="table table-striped table-bordered" ID="GridView2" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" OnSelectedIndexChanged="GridView2_SelectedIndexChanged">
Line 45: <Columns>
Line 46: <asp:BoundField DataField="forum_id" HeaderText="forum_id" ReadOnly="True" SortExpression="forum_id" InsertVisible="False" >
所以在我的例子中,我获取了会话论坛 ID(即“14”),按照我的预期,它应该从数据库中获取 14 并将其显示在页面上。但相反,有这个错误。有人可以解释一下吗?我也阅读了一些文档,并按照每个步骤进行操作。我还是个新人,正在努力学习我能学的东西。
不需要在代码中这样做,您可以这样写 sql:
WHERE [Forum_id] = @fid">
然后在 SqlDataSource 中声明参数(您当前在其中 ><
<SelectParameters>
<asp:SessionParameter Name="fid" SessionField="Forum_ID" Type="Int32" />
</SelectParameters>
见https://docs.microsoft.com/en-us/previous-versions/aspnet/z72eefad(v=vs.100)
我做sqldatasource的常用方法是这样的。通常以 table 格式显示所有论坛。
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:elibraryDBConnectionString %>"
SelectCommand="SELECT [forum_id], [forum_topic], [forum_description], [forum_status], [company_name], [replies_count], [publish_date], [publisher_name], [forum_img_link], [moderator_name] FROM [forum_accept_tbl]">
</asp:SqlDataSource>
但是,我不想显示所有论坛,而只想显示一个具有会话论坛 ID 的论坛。以下是对我不起作用的代码。
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:elibraryDBConnectionString %>"
SelectCommand="SELECT [forum_id], [forum_topic], [forum_description], [forum_status], [company_name], [replies_count], [publish_date], [publisher_name], [forum_img_link], [moderator_name] FROM [forum_accept_tbl] WHERE [Forum_id] = Session["Forum_id"]"></asp:SqlDataSource>
我尝试添加 WHERE,但它无法识别该会话。这是我的 forum.aspx 代码 btw。是否应该在 forum.aspx.cs 中进行更改?我对 asp.net 还是个新手,我认为这是一个简单的错误,但我希望我能学到更多。
EDITED CURRENT PROGRESS. 阅读一些有用的文件后建议。以下是我当前的进度以及它显示的当前错误。
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:elibraryDBConnectionString %>" SelectCommand="SELECT [forum_id], [forum_topic], [forum_description], [replies_count], [forum_img_link], [company_name], [publisher_name], [publish_date], [moderator_name] FROM [forum_accept_tbl] WHERE ([forum_id] = @forum_id)"> <SelectParameters> <asp:SessionParameter Name="forum_id" SessionField="forum_id" Type="Int32" /> </SelectParameters></asp:SqlDataSource>
<div class="col">
<asp:GridView class="table table-striped table-bordered" ID="GridView2" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" OnSelectedIndexChanged="GridView2_SelectedIndexChanged">
<Columns>
我检查了会话,它运行良好(使用正确的会话论坛 ID)。但是,在我 运行 它并单击 link 按钮之后,它显示以下错误:
说明:编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。
编译器错误消息:CS1061:'forum_aspx'不包含'GridView2_SelectedIndexChanged'的定义并且没有可访问的扩展方法'GridView2_SelectedIndexChanged'接受第一个可以找到 'forum_aspx' 类型的参数(您是否缺少 using 指令或程序集引用?)
来源错误:第 44 行
Line 42: <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:elibraryDBConnectionString %>" SelectCommand="SELECT [forum_id], [forum_topic], [forum_description], [replies_count], [forum_img_link], [company_name], [publisher_name], [publish_date], [moderator_name] FROM [forum_accept_tbl] WHERE ([forum_id] = @forum_id)"> <SelectParameters> <asp:SessionParameter Name="forum_id" SessionField="forum_id" Type="Int32" /> </SelectParameters></asp:SqlDataSource>
Line 43: <div class="col">
Line 44: <asp:GridView class="table table-striped table-bordered" ID="GridView2" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2" OnSelectedIndexChanged="GridView2_SelectedIndexChanged">
Line 45: <Columns>
Line 46: <asp:BoundField DataField="forum_id" HeaderText="forum_id" ReadOnly="True" SortExpression="forum_id" InsertVisible="False" >
所以在我的例子中,我获取了会话论坛 ID(即“14”),按照我的预期,它应该从数据库中获取 14 并将其显示在页面上。但相反,有这个错误。有人可以解释一下吗?我也阅读了一些文档,并按照每个步骤进行操作。我还是个新人,正在努力学习我能学的东西。
不需要在代码中这样做,您可以这样写 sql:
WHERE [Forum_id] = @fid">
然后在 SqlDataSource 中声明参数(您当前在其中 ><
<SelectParameters>
<asp:SessionParameter Name="fid" SessionField="Forum_ID" Type="Int32" />
</SelectParameters>
见https://docs.microsoft.com/en-us/previous-versions/aspnet/z72eefad(v=vs.100)