在剃刀上循环执行SQL语句

时间:2019-04-23 09:28:12

标签: javascript mysql sql asp.net razor

试图创建一个“购物车”,以供用户保存选定的物品,但是在表单完成后,来自“购物车”的所有数据都插入到一行中

示例:

OrderID     StockID
Or002       IT01,IT02,IT03

如何将数据分别分成一行?

预期结果:

OrderID     StockID
Or002       IT01
Or002       IT02
Or002       IT03

工作原理:

1)用户将单击一个按钮,该按钮将生成以下html代码。

(JavaScript)

var cartRowContents = `
    <a class="dec" id="dec">-</a>
    <input class="quan-num" id="number" name="FQty" value="1"/>
    <a class="inc" id="inc">+</a>
    <input type="hidden" id="FID" name="FID" value=${id} />
    <div class  = "rem">REMOVE ITEM</div>`;

名为FID的输入带有用户选择的项目ID的向下传递的值; 生成的html代码将插入到表格/购物车中。 用户不能添加同一项目,但可以使用<input name="FQty">修改数量(<a id="dec"> and <a id="inc">的值)。

2)当用户完成订购后,以下代码将运行

(C#)

@functions{

public static String insD(Database db, String query) {

    IEnumerable<dynamic>  data;

    data = db.Query(query); //Executing the Query

       return query;

    }

}

(ASP.NET网页)

@{

 Database db = Database.Open("geh");

 String m_OrderID = "Or002";

 if (IsPost) {  //if statement when form is submitted

        string FID = Request.Form["FID"];
        var Qty = Request.Form["FQty"];

        String query = "INSERT INTO gah.order VALUES ('" + m_OrderID + "','" + FID + "','" + Qty + "')";

        insD(db, query);

}

我尝试过的事情:

(ASP.NET网页)

@{

if (IsPost) {
      Database db = Database.Open("geh");
      String m_OrderID = "Or002";

           for(int i = 0; i < 2 ; i++){

                var FID = Request.Form["FID"][i];

                var Qty = Request.Form["FQty"][i];

                String query = "INSERT INTO gah.orders VALUES ('" + m_OrderID + "','" + FID + "', '" + Qty + "')";

                insD(db, query);
       }
   }
}

导致插入ID的第一个字符。

示例:

ID =“ DE002”

OrderID库存ID

Or002 D

数据库信息:

OrderID(PK)varchar(10), StockID(PK)varchar(10), 数量int()

1 个答案:

答案 0 :(得分:0)

如果我的理解正确,您的购物车将同时包含sap.ui.define([ "sap/m/VBox", "sap/m/VBoxRenderer" ], function (VBox, VBoxRenderer) { "use strict"; var MyBox = VBox.extend("my.domain.controls.VBox", { metadata : { properties : { }, aggregations : { }, events: { copy : { parameters : {} }, paste : { parameters : {} } } }, init : function () { this._bExcludeFromTabChain = false; VBox.prototype.init.apply(this, arguments); }, renderer : function (oRM, oControl) { oRM.write("<div"); oRM.writeControlData(oControl); oRM.addClass("MyBox"); oRM.writeAttribute("tabindex", "0"); // allows selection oRM.writeClasses(); oRM.write(">"); VBoxRenderer.render.apply(this, [oRM, oControl]); oRM.write("</div>"); } }); MyBox.prototype.onAfterRendering = function() { this.$().on("copy", jQuery.proxy(this.handleCopy, this)); this.$().on("paste", jQuery.proxy(this.handlePaste, this)); }; MyBox.prototype.onBeforeRendering = function() { this.$().off("copy", this.handleCopy); this.$().off("paste", this.handlePaste); }; MyBox.prototype.exit = function() { this.$().off("copy", this.handleCopy); this.$().off("paste", this.handlePaste); }; MyBox.prototype.handleCopy = function() { this.fireEvent("copy", {}); }; MyBox.prototype.handlePaste = function() { this.fireEvent("paste", {}); }; MyBox.prototype.getAccessibilityInfo = function() { return { children: this.getItems(), focusable: true }; }; return MyBox; }); <input name=FID>的多个字段,因此在发布表单时,<input name=FQty>Request.Form["FID"]分别是以逗号分隔的列表?如果是这样,也许可以通过以下方法达到目的:

Request.Form["FQty"]

仅使用您共享的代码有点难以理解,但是请告诉我我是否走在正确的轨道上。