订购后在数据库中保存列表框项

时间:2016-03-29 23:41:33

标签: c# asp.net listbox

我有一个带有两个列表框和一个保存按钮的asp.net页面。用户需要根据他的订单将项目从listbox1传输到listbox2我的意思是用户可以选择首先出现的女巫项目以及接下来要进行的项目。

之后我的系统会建议实现订购商品的结果(最常见),希望您理解

我在两个列表框之间进行了传输方法,并且运行良好。但我陷入了保存方法,它可以在列表框2之后保存项目,但不是以相同的传输顺序(用户顺序)保存。

以下是我的保存按钮代码:

protected void Button1_Click(object sender, EventArgs e)
{
    string strConnString = ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString;
    string str;

    OracleCommand com;
    OracleConnection con = new OracleConnection(strConnString);

    try
    {
        con.Open();

        for (int i = 0; i < ListBox2.Items.Count; i++)
        {
            str = "insert into Criteria values('" + ListBox2.Items[i].ToString() + "')";
            com = new OracleCommand(str, con);
            com.ExecuteNonQuery();
        }

        LabOut.Visible = true;
        LabOut.Text = "Upload succesful!";
        con.Close();
        //Response.Write("Inserted");
    }
    catch (Exception)
    {
        LabOut.Visible = true;
        LabOut.Text = "Upload failed!";
    }
    finally
    {
       con.Close();
       con.Dispose();
    }
}     

2 个答案:

答案 0 :(得分:0)

这里的问题是数据库表本身并不具有顺序概念。除非您使用order by子句,否则从表中检索行永远不会保证订单。

您应该在表格中添加一个附加列(例如,命名为&#34;序列&#34;或&#34;订单&#34;)。它可以是int或其他可排序的值。然后,您需要修改insert语句:

str = "insert into Criteria(ItemValue, Sequence) values('" + ListBox2.Items[i].ToString() + "'," + i.ToString() + ")";

并使用

检索列表
str = "Select ItemValue from Criteria order by Sequence"

答案 1 :(得分:0)

@fifo跟我来

  1. 首先在数据库中添加一个列,说它是SeqNo。
  2. 然后用它保存您的数据。我的意思是生成SeqNo。对于每个listbox2项目并保存。
  3. 当您将数据从数据库提取到lintbox2时,请在SeqNo上使用sql / linq ORDER BY。列,并显示您保存的订单。简单.. :))