2013-07-27 47 views
-2

這是我用來顯示數據庫中的行的函數。默認值是級別1,SID 1.如果用戶從下拉列表中選擇,級別可以改變,但ID保持不變,因爲我不知道該在這裏做什麼。我希望一次獲得一條記錄,但是當我按下下一個按鈕時,我希望獲得具有選定級別的下一行。如果可能的話,你可以給我一些關於如何做到這一點的提示嗎?先謝謝你。從SQL中一次獲取一條記錄

public void FillPageSpelling() 
    { 
     ArrayList videoList1 = new ArrayList(); 


     if (!IsPostBack) 
     { 
      videoList1 = ConnectionClass.GetSpelling(1,1); 
     } 
     else 
     { 
      int i = Convert.ToInt32(DropDownList1.SelectedValue); 
      videoList1 = ConnectionClass.GetSpelling(i,1); 
     } 
     StringBuilder sb = new StringBuilder(); 
     foreach (Spelling sp in videoList1) 
     { 

      sb.Append(
      string.Format(
       @"<table class='VideoTable'> 
    <tr> 
    <td align='center'> 
     <font face='Verdana'> 
     <input type=text style=display:none id=TextBox3 value={0}> 
     </td> 
    </tr> 
    <tr> 
    <td align='center'> 
     <font face='Verdana'> 
     <font size='3'>Level:</font> 
     <font size='2'>{3}</font> 
     </font> 
    </td> 
    </tr> 
    <tr> 
    <td align='center'> 
     <font face='Verdana'> 
     <font size='3'>Sentence:</font> 
      <font size='2'>{1}</font> 
     </font> 
     </td> 
    </tr> 
    <tr> 
    <td align='center'> 
     <font size='3'>Sound: <audio controls><source src=sound/{2}></audio> 
     <font face='Verdana'> 
     <font size='2'></font> 
     </font> 
    </td> 
    </tr>    
    <tr> 
    <tr> 
    <td align='center'> 
     <font face='Verdana'> 
     <font size='3'>Write the word here: <input type=text id=TextBox1> 
     </font> 
     </font> 
    </td> 
    </tr>  
    <td> 
     <input type=button value='Check' class='p-userButton' onClick='ButtonClick(document.getElementById(""TextBox1"").value, document.getElementById(""TextBox2"").value);'/> 
    </td> 
    <td> 
     <input type=button value='Cheat' class='p-userButton' onClick='Cheat(document.getElementById(""TextBox2"").value);' 
    </td> 
    <td> 
     <input type=button value='Next' class='p-userButton' 
    </td> 
    </tr> 
    <tr> 
    <td align='center'> 
     <font face='Verdana'> 
     <input type=text style=display:none id=TextBox2 value={4}> 
     </td> 
    </tr> 
    </br> 
</table>", sp.SID, sp.Sentence, sp.Audio, sp.Level, sp.Word)); 
      lblOutput.Text = sb.ToString(); 
     } 
    } 

這裏是返回基於水平和ID一個記錄的方法:

public static ArrayList GetSpelling(int level, int sid) 
{ 
    ArrayList list = new ArrayList(); 
    string query = string.Format("SELECT * FROM Spelling WHERE Level LIKE '{0}' and SID LIKE '{1}'", level, sid); 

    try 
    { 
     conn.Open(); 
     command.CommandText = query; 
     SqlDataReader reader = command.ExecuteReader(); 

     while (reader.Read()) 
     { 
      int SID = reader.GetInt32(0); 
      string Sentence = reader.GetString(1); 
      string Word = reader.GetString(2); 
      int Level = reader.GetInt32(3); 
      string Audio = reader.GetString(4); 

      Spelling lst = new Spelling(SID, Sentence, Word, Level, Audio); 
      list.Add(lst); 
     } 
    } 
    finally 
    { 
     conn.Close(); 
    } 
    return list; 
} 
} 
+2

ohh不,代碼...只是傷害了我的眼睛...不能看它! – balexandre

+0

@balexandre,使其更好的任何提示? – user2457767

+1

你的表代碼很討厭。你正在使用''標籤!可怕的東西,有些甚至是多餘的。考慮改變CSS。您還有一些未封閉的標籤。特別值得一提的是你的'Check','Cheat','Next'輸入。我會解決這個問題,它可能沒有幫助。還應引用表格元素中的所有屬性值。 ''not'' – Scott

回答

0

我不必回答你的問題,但我對你有幾個話題研究。

正如其他人所建議的,研究表單與服務器端代碼的正確綁定。如果MVC(我推薦),從視圖到控制器的模型綁定是你需要關注的地方。

研究MVC。

研究對象關係映射 - 如果你喜歡.NET,嘗試實體框架5.

此外,尋找到第三方數據網格和數據尋呼機。

+1

這些應該是評論,而不是答案。 – Khan

+0

它不會讓我評論以前的線程出於某種原因。我道歉。 –

相關問題