Обычно я использую sqldatasource так. Которая обычно показывает все форумы в виде таблицы.

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

Однако я хочу показать не весь форум, а только один форум с идентификатором форума сеанса, который у меня есть. Ниже приведен код, который у меня не сработал.

<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, кстати. Следует ли его менять в forum.aspx.cs или нет? Я все еще новичок в asp.net и думаю, что это простая ошибка, но надеюсь, что смогу узнать больше.

РЕДАКТИРОВАТЬ ТЕКУЩИЙ ПРОГРЕСС. После прочтения предложенных полезных документов. Ниже показан мой текущий прогресс с текущей ошибкой, которую он показывает.

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

Я проверил сеанс, и он работает хорошо (с правильным идентификатором форума сеанса). однако после того, как я запустил его и нажал кнопку ссылки, он показывает эту ошибку ниже:

Описание : произошла ошибка во время компиляции ресурса, необходимого для обслуживания этого запроса. Просмотрите следующие сведения об ошибках и соответствующим образом измените исходный код.

Сообщение об ошибке компилятора : 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" >

Итак, в моем случае я взял идентификатор форума сеанса (который равен «14»), и, как я ожидал, он должен был взять 14 из базы данных и показать его на странице. Но вместо этого возникает эта ошибка. может кто-нибудь объяснить? Я также прочитал некоторые документы и следил за каждым шагом. Я все еще новичок и пытаюсь узнать все, что могу.

0
Java Student 6 Окт 2020 в 03:58

1 ответ

Лучший ответ

Не нужно делать это в коде, вы можете написать свой 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)

0
Caius Jard 8 Окт 2020 в 06:13