Это функция, которую я использую для отображения строки из базы данных. Значение по умолчанию - это уровень 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;
}
}
ohh нет, код ... только больно глаза ... не могу смотреть на это! – balexandre
@balexandre, любые советы, чтобы сделать его лучше? – user2457767
Ваш код таблицы неприятен. Вы используете '' теги! Страшные вещи, некоторые даже лишние. Рассмотрите возможность изменения для CSS. У вас также есть несколько закрытых тегов. Особенно примечательны ваши входы 'Check',' Cheat', 'Next'. Я бы это исправил, возможно, это не помогает. Также должны быть указаны все значения атрибутов в ваших элементах таблицы. '' not '' – Scott