2011-10-22 12 views
0

私はasp.net(C#)に新しくて初心者です。 私はGridView Controlへのバインディングについてほとんど知りません。 しかし、今私はいくつかの大きな問題に直面しています。 私のデータのいくつかが繰り返され、コードビハインドでそれらを制御します。私のコードを変数に入れ、GridViewではなくdivに追加します。 私はまたこのためにページングしたい。Asp.net(c#)制御なしのページング

誰でも手伝いできますか?皆さんがより具体的なものを必要としているかどうか私に尋ねてください 私は初心者ですので、どのコードを提供するのか分かりません。

public void BindList(int start, int pagesize) 
{ 
    lblPageIndex.Text = page.ToString(); 
    roles = DoctorBLL.GetAllDoctor(page, recordPerPage); 
    List<int> rIDs = ((from r in roles select r.doctorID).Distinct()).ToList(); 
    foreach(int rID in rIDs) 
    { 
     doctorList.InnerHtml += "<table width='100%' border=1 cellspacing=0 style='border-collapse:collapse;margin-top:10px;'><tr>"; 
     List<DoctorEntity> dlist = roles.Where(role => role.doctorID == rID).ToList(); 
     if (dlist.Count > 0) 
     { 
      doctorList.InnerHtml += "<td>"; 
      doctorList.InnerHtml += "<h2>" + dlist.First().title + "</h2>"; 
      doctorList.InnerHtml += "<h3>" + dlist.First().name + "</h3>"; 
      doctorList.InnerHtml += "</td>"; 
      doctorList.InnerHtml += "<td>"; 
      doctorList.InnerHtml += dlist.First().qualification; 
      doctorList.InnerHtml += "</td>"; 
      doctorList.InnerHtml += "</tr>"; 
      doctorList.InnerHtml += "<tr>"; 
      doctorList.InnerHtml += "<td colspan='3'>"; 
     } 
     List<int> dirIDS = ((from r in dlist select r.directoryID).Distinct()).ToList(); 

     foreach (int dirid in dirIDS) 
     { 
      doctorList.InnerHtml += "<ul style='width:200px;float:left;list-style:none;'>"; 
      List<DoctorEntity> dirlist = dlist.Where(dt => dt.directoryID == dirid).ToList(); 
      if (dirlist.Count > 0) 
      { 
       doctorList.InnerHtml += " <li><h4>" + dlist.First().directoryName + "</h4></li>"; 
      } 
      foreach (DoctorEntity dir in dirlist) 
      { 
       doctorList.InnerHtml += "<li>" + dir.dayStr + " (" + dir.startTime + " : " + dir.endTime + ") </li>"; 
      } 

      doctorList.InnerHtml += "</ul>"; 
     } 
     doctorList.InnerHtml += "</td>"; 
     doctorList.InnerHtml += "</tr>"; 
     doctorList.InnerHtml += "</table>"; 
    } 
    foreach (DoctorEntity entity in roles) 
    { 
     recordCount = entity.recordCount; 
     break; 
    } 
    int flag = recordCount % recordPerPage; 
    if (flag != 0) 
    { 
     flag = (recordCount/recordPerPage) + 1; 
    } 
    else 
    { 
     flag = recordCount/recordPerPage; 
    } 

    lblTotalPage.Text = flag.ToString(); 
    lblTotal.Text = recordCount.ToString(); 

    doctorList.DataBind(); 
} 
#endregion 
+3

あなたは自分のコメントを1として、特にページング –

+0

ため、グリッドビューを使用する場合、それははるかに簡単で分かりやすいだろう下記のように、あなたが働くことができなかった(グループ化など)SQLを表示して、SQLを修正します。 – Hogan

+0

\t \t \t \t d.id doctoridを選択 \t \t \t \t d.nameのDNAME、 \t \t \t \t d.title dtitle、 \t \t \t \t d.qualificationのdqua、 \t \t \t \t dt.id dtid、 \t \t \t \t dt.name dtname、 \t \t \t \t tt.day_id、D BY(ORDER OVER \t \t \t \t tt.start_time、 \t \t \t \t tt.end_time、 \t \t \t \t ROW_NUMBER()。ドクターD \t \t \t INNER FROM [RowNumber関数] \t \t \tとなるID DESC)は、DT ON \t \t \t \t dtがd.id = tt.doctor_id \t \t \t内部結合ディレクトリのtime_table TT \t \t \tをJOIN。 id = tt.directory_id \t \t \t ORDER BY d.id DESC \t \t \t END – Gabriel

答えて

0

あなたはページングを達成するためにcursorsRequest.QueryStringを使用することができます...
医師が多くの任命場所
任命場所はいくつかの日
数日、数回シフトを持っています:ここで

の概要ですontrolsを使わずに。

例:あなたのページのURLがhttp://localhost/MyApp/DoctorsList.aspx のようなものである場合は、次の10件のレコードを見たいときにだけ使用し、その後、要求されたページを取得するために使用int pageNumber = Convert.ToInt32(Request.QueryString["page"])の背後にあるあなたのコードでhttp://localhost/MyApp/DoctorsList.aspx?page=2

にURLを変更データベースのカーソルをpageNumber値に基づいて特定のレコードをフェッチし、質問に記載されているコードでテーブルを再構築します。要するに、医師のリストをすべて取得する代わりに、カーソルを使用してn人の医者を取得し、Request.QueryStringを使用して残りのリストをブラウズすることです。

しかし、ハッサンMokdadが彼のコメントで言ったようにあなたは、グリッドビューにしようとした場合、それが良いだろう

+0

ありがとうございました – Gabriel

+0

実際には、私はPHPでURLにページングクエリ文字列を渡しました。ああ、ところで、私はプロジェクトに取り組んでいるので、ストアプロシージャ、DAL、BLLを使用します。私はもっ​​と簡単にしたいです。しかし、GridViewの問題は、私はデータベースからデータを抽出するときにJOINを使う必要があります。 2つの指定された場所を持つ医者を抽出するときと同じように、その医者はビューに2回表示されます。その任命された場所には、その医師に関連する2日間があります。任命された場所がさらに表示されます。そんなことを続けていくなど。 – Gabriel

+0

私の友人は、DoctorとTime-Table(日)を分けて別のエンティティを読み込むことを提案します。ただし、データベースに2度以上アクセスする必要があるため、パフォーマンスが低下します。接続が過負荷になります。ストアプロシージャでGROUP BYを使用します。しかし、このストアプロシージャは動作しません、それはエラーをスローします。私はそれをすることはできません。 Sooooo ...これらはGridViewを使用することによって問題になります。あなたが解決する方法があれば。私は嬉しいです。 ありがとうございます。 – Gabriel

関連する問題