-2

这是我用来显示数据库中的行的函数。默认值为级别1,SID 1。如果用户从下拉列表中选择,级别可以更改,但ID保持不变,因为我不知道在这里做什么。我想一次获得一条记录,但是当我按下下一个按钮时,我想获得具有所选级别的下一行。如果可能的话,你能给我一些关于如何做到这一点的提示吗?先感谢您。

 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;
}
}
4

1 回答 1

0

我不一定对您的问题有答案,但我确实有一些主题供您研究。

正如其他人建议的那样,研究表单与服务器端代码的正确绑定。如果是 MVC(我推荐),从 View 到 Controller 的模型绑定是您需要关注的地方。

研究 MVC。

研究对象关系映射——如果你喜欢 .NET,试试 Entity Framework 5。

此外,查看第三方数据网格和数据寻呼机。

于 2013-07-29T17:52:07.443 回答