2013-07-27 3 views
-2

Это функция, которую я использую для отображения строки из базы данных. Значение по умолчанию - это уровень 1, SID 1. Если пользователь выбирает из выпадающего списка, уровень может измениться, но идентификатор остается неизменным, потому что я не знал, что делать здесь. Я хочу получить одну запись за раз, но когда я нажимаю следующую кнопку, я хочу получить следующую строку с выбранным уровнем. Если это возможно, можете ли вы дать мне несколько советов о том, как это сделать? Заранее спасибо.Получить одну запись за раз от 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, попробуйте Entity Framework 5.

Кроме того, посмотрите на сетки сторонних данных и пейджеры данных.

+1

Это должны быть комментарии, а не ответ. – Khan

+0

Это не позволило мне прокомментировать предыдущий поток по какой-то причине. Я извиняюсь. –

Смежные вопросы