2016-03-29 81 views
0

我有一個帶有兩個列表框和一個保存按鈕的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(); 
    } 
}  
+1

它可能看起來像一個小事情,但要注意拼寫(特別是在你的問題的標題)和適當的大寫。您的問題文本中沒有單個大寫字母。注重細節是開發人員的重要資產。 –

回答

0

這裏的問題是,數據庫表本身不具有的順序的概念。從表中檢索行從不保證訂單,除非您使用order by子句。

您應該爲您的表格添加一個額外的列(例如,命名爲「序列」或「訂購」)。它可以是一個int或其他可排序的值。那麼你就需要修改你的插入語句:使用

str = "Select ItemValue from Criteria order by Sequence" 
0

@fifo跟着我

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

和檢索列表

  1. 月1日在數據庫中添加一列說,這是的SeqNo 。
  2. 然後保存你的數據。我的意思是生成SeqNo。爲每個listbox2項目並保存它。
  3. 當您將數據從數據庫中提取到lintbox2,然後在SeqNo上使用sql/linq ORDER BY。列並將它們顯示在您保存的訂單上。簡單.. :)