Команда вставки SqlDataSource не получает параметры вставки. Вставка null для параметров - PullRequest
0 голосов
/ 27 апреля 2019

Я работаю над школьным проектом, и у меня возникают проблемы только с одним функционалом из всего моего сайта.По какой-то причине, когда я нажимаю ссылку «Добавить в корзину», все мои параметры вставки вставляются как нулевые, даже если они не равны нулю в строке таблицы gridview.Мне нужно вставить артикул товара и цену в таблицу корзины со страницы моего списка товаров, где все товары с их изображениями отображаются в отформатированном виде сетки.Я пишу с использованием C #, ASP.net, HTML и CSS.Моя база данных спроектирована на MySQL.

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

Веб-страница:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ShopHome.aspx.cs" Inherits="WebApplication1.App_Pages.ShopHome" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Shop</title>   
    <!-- Nav-bar required: -->
    <link rel="stylesheet" href="assets/css/Navigation-with-Button.css"/>
    <link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css"/>
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>

<body>
    <section>
      <div id="nav-placeholder">
    </div>
    <script>
        $(function () {
            $("#nav-placeholder").load("nav-user.html");
        });
    </script>
     </section>
    <br /><br />  <br /><br />  <br /><br />
    <form id="form1" runat="server">

        <asp:GridView ID="items" runat="server"  DataSourceID="SqlDataSource1" AutoGenerateColumns="False" DataKeyNames="sku" ShowInsertButton ="false">
          <Columns>
             <asp:BoundField DataField="sku" HeaderText="sku" 
                    SortExpression="sku" ReadOnly="true"/>
                <asp:BoundField DataField="color" HeaderText="color" 
                    SortExpression="color" />
                <asp:BoundField DataField="item_name" HeaderText="item_name" 
                    SortExpression="item_name" />
                <asp:BoundField DataField="price" HeaderText="price" 
                    SortExpression="price" />

               <asp:ImageField DataImageUrlField="imgPath" HeaderText="Image" />

       <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton Runat="server" 
                       OnCommand= "GridView1_AddCart" CommandName="Insert">Add To Cart</asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>

        </asp:GridView>
           <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:starssparksConnectionString %>" 
                ProviderName="<%$ ConnectionStrings:starssparksConnectionString.ProviderName %>" 
                SelectCommand="SELECT * FROM Item"
                InsertCommand="INSERT INTO Cart (item_sku,quantity,cost,user_id) Values (@sku,1,@price,@user_id)">


            <InsertParameters>
                <asp:Parameter Name="sku" />
                <asp:Parameter Name="price" />
                <asp:SessionParameter Name="user_id" sessionfield="user_id" />
             </InsertParameters>

            </asp:SqlDataSource>
    </form>

</body>
    <script src="assets/bootstrap/js/bootstrap.min.js"></script>
    <script src="assets/js/theme.js"></script>
</html>

Серверная часть для веб-страницы:

using System;
using WebApplication1.App_Code;
using MySql.Data.MySqlClient;
using System.Web.UI.WebControls;

namespace WebApplication1.App_Pages
{
    public partial class ShopHome : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["user"] == null)
            {
                Response.Redirect("login.aspx");
            }
            else
            {
                userACC person = new userACC();
                person.username = Session["user"].ToString();
                int roleNum = person.checkRole();
                if (roleNum != 1)
                {
                    Response.Redirect("login.aspx");
                }

            }
            userACC p = new userACC();
            p.username = Session["user"].ToString();
            int temp = p.getID();
            this.Session["user_id"] = temp;
        }

        protected void GridView1_AddCart(object sender, System.Web.UI.WebControls.CommandEventArgs e)
        {
            if (e.CommandName == "Insert")
            {
                SqlDataSource1.Insert();
            }
        }
    }
}

Настройка базы данных для соответствующих таблиц:

sku INT NOT NULL AUTO_INCREMENT,
color varchar(45),
item_name varchar(45),
price DECIMAL(10,2),
imgPath varchar(500),
PRIMARY KEY (sku)
);


create table Cart(
id INT NOT NULL AUTO_INCREMENT,
item_sku INT,
quantity INT,
cost DECIMAL(10,2),
user_id INT,
PRIMARY KEY (id),
FOREIGN KEY user_id (user_id) REFERENCES userACC (id),
FOREIGN KEY item_sku (item_sku) REFERENCES Item (sku)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...