Datagrid 컨트롤은 너무 유명하기 때문에 이전에는 많은 것을 사용했습니다. 이것은 주로 데이터 주의자 제어에 관한 것입니다.
Datalist Control은 실제로 선택 및 편집 방법을 지원합니다. 교차로 교차로
실제로 두통입니다.
그러나 Datalist는 제작 된 페이징 기능을 제공하지 않지만 페이징 기능을 구현하기 위해 Datalist 컨트롤을 사용할 수 없다는 것을 의미하지는 않습니다.
아래는 모든 원래 코드입니다. 실제 방법은 PHP의 페이징과 유사하지만 PHP의 SQL 문이 아니라 데이터 아래이터와 데이터 세트의 조합이 있습니다.
(이 프로그램은 .NET 프레임 워크 베타 2에 따라 테스트됩니다)
< % @ page language = c# %>
< % @ 가져 오기 네임 스페이스 = System.Data %>
< % @ import namespace = system.data.oledb %>
<script language = c# runat = server>
/*
날아가는 나이프로 만듭니다
http://www.aspcn.com
2001-7-25 01:44
.NET 프레임 워크 베타 2를 지원합니다
*/
OLEDBCONNECTION MYCONN;
int pagesize, recordcount, pagecount, currentpage;
public void page_load (Object SRC, EventArgs e)
{{
// pagesize를 설정합니다
pagesize = 10;
// 연결하다
String myConnString = 제공자 = microsoft.jet.oledb.4.0;
MyConn = 새로운 OLEDBCONNECTION (MyConnString);
myconn.open ();
// 첫 번째 실행 요청
if (! page.ispostback)
{{
ListBind ();
CurrentPage = 0;
ViewState [pageIndex] = 0;
// 총 얼마나 많은 레코드가 계산됩니다
recordCount = calculateCord ();
lblrecordCount.text = recordCount.ToString ();
// 총 얼마나 많은 페이지가 계산됩니다
pagecount = RecordCount/Pagesize;
lblpagecount.text = pagecount.toString ();
ViewState [pageCount] = pageCount;
}
}
// 총 얼마나 많은 레코드가 있는지 계산합니다
public int calcultecord ()
{{
int intcount;
문자열 strcount = score에서 co로 count (*)를 선택합니다.
OLEDBCOMMAND MYCOMM = NEW OLEDBCOMMAND (StrCount, MyConn);
OLEDBDATAREADER DR = MYCOMM.EXECUTEREADER ();
if (dr.read ()))
{{
intcount = int32.parse (dr [co] .tostring ());
}
또 다른
{{
intcount = 0;
}
dra.close ();
intcount를 반환합니다.
}
icollection createSource ()
{{
int startIndex;
// 가져 오기 시작 주소를 설정합니다
startIndex = currentpage*pagesize;
문자열 strsel = select * from score;
DataSet DS = 새 데이터 세트 ();
OLEDBDATADAPTER MYADAPTER = 새로운 OLEDBDATAADAPTER (Strsel, MyConn);
myadapter.fill (ds, startIndex, pagesize, score);
return ds.tables [score] .defaultView;
}
공개 void listbind ()
{{
score.datasource = CreateSource ();
score.databind ();
lbnnextpage.enabled = true;
lbnprevpage.enabled = true;
if (currentPage == (pageCount-)) lbnnextPage.enabled = false;
if (currentpage == 0) lbnprevpage.enabled = false;
lblcurrentPage.text = (currentPage+1) .tring ();
}
public void page_onclick (Object Sender, CommandeventArgs e)
{{
currentPage = (int) viewstate [pageIndex];
pagecount = (int) viewstate [pagecount];
문자열 cmd = e.comandname;
// 페이지 회전 방향을 결정하려면 CMD 판사
스위치 (CMD)
{{
다음 사례 :
if (currentPage <(pageCount-)) currentPage ++;
부서지다;
사례 이전 :
if (currentPage> 0) currentPage-;
부서지다;
}
ViewState [pageIndex] = currentPage;
ListBind ();
}
</스크립트>
<html>
<헤드>
<제목> </title>
</head>
<body>
<form runat = server>
함께 <asp : label id = lblrecordCount foregolor = red runat = server />
현재는 <asp : label id = lblcurrentpage forecolor = red runat = server /> /<asp : label id = lblpagecount foregolor = red raunat = server />
<ASP : Datalist id = score runat = Server
Headstyle-BackColor =#aaaadd
번갈아 가며 BackColor = Gainsboro
editemstyle-backcolor = 옐로우
"
<Temtemplate>
이름 : < %# databinder.eval (container.dataitem, name) %>
<asp : linkbutton id = btnselect text = editor commandname = 편집 runat = server />
</itemtemplate>
</asp : datalist>
<asp : linkbutton id = lbnprevpage text = 이전 페이지 commandname = prev oncommand = page_onclick runat = server />
<asp : linkbutton id = lbnnextpage text = next commandname = next oncommand = page_onclick runat = server />
</form>
</body>
</html>
실행 결과는 위와 같이 :)
당신이 프로그램을 작성할 때, 가장 중요한 것은 그것에 대해 스스로 생각하는 것입니다. 문제는 너무 간단하고 아직 아무도 기꺼이 대답하지 않습니다.
많은 생각을하고 정보를 확인하는 것이 실제로 얻어지고 있습니다.