-2

これは、データベースから行を表示するために使用する関数です。デフォルト値はレベル 1、SID 1 です。ユーザーがドロップダウン リストから選択した場合、レベルは変更できますが、ここで何をすべきかわからなかったため、ID は同じままです。一度に 1 つのレコードを取得したいのですが、次のボタンを押すと、選択したレベルで次の行を取得したいと考えています。もし可能でしたら、その方法のコツを教えていただけないでしょうか。前もって感謝します。

 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 に基づいて 1 つのレコードを返すメソッドです。

 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 に答える