2009-09-24 7 views
0

내 asp.net gridview에서 이미지를 표시하는 템플릿 열을 배치하고 있습니다.asp.net gridview template column

템플릿 열 내에서 이미지 컨트롤을 추가하고 데이터베이스의 이미지를 성공적으로 표시했습니다. 나는 또한 페이징을 사용하고있다.

페이징 또한 일어납니다.하지만 페이징 이미지가 그리드 뷰에 적절한 순서로 오지 않는 경우, 예를 들어 첫 번째 3 페이지는 디플레이션으로 가정하고 a.jpg, b.jpg, c.jpg라고 가정하고 페이지 번호를 클릭하면 반복됩니다. 남은 사진 대신 같은 사진, 나는로드 이벤트에 if(!ispostback)도 사용하고 있습니다. 제발 도와주세요.

페이지로드 이벤트에서 내 코드는 다음과 같습니다

다 = 새로운 SqlDataAdapter를 ("* T1에서 선택", 사기꾼); ds = new DataSet(); da.Fill (ds); 경로 = Server.MapPath (@ "~ \ images"); if (! IsPostBack) { GridView1.DataSource = ds; GridView1.DataBind();

ASCIIEncoding asc = new ASCIIEncoding(); 
    int j = GridView1.Rows.Count; 

    for (int i = 0; i < j; i++) 
    { 

     GridViewRow r=GridView1.Rows[i]; 
     b = (byte[])ds.Tables[0].Rows[i]["photo"]; 
     string name = asc.GetString(b); 
     Image img = (Image)r.FindControl("Image1"); 
     img.ImageUrl = path + @"\" + name; 

    } 
    } 

및 페이징 이벤트에서 내 코드

입니다

GridView1.PageIndex = e.NewPageIndex; GridView1.DataSource = ds; GridView1.DataBind(); ASCIIEncoding asc = 새 ASCIIEncoding(); int j = GridView1.Rows.Count; 사전에

for (int i = 0; i < j; i++) 
    { 

     GridViewRow r=GridView1.Rows[i]; 
     b = (byte[])ds.Tables[0].Rows[i]["photo"]; 
     string name = asc.GetString(b); 
     Image img = (Image)r.FindControl("Image1"); 
     img.ImageUrl = path + @"\" + name; 

    } 

감사 상 기타

+0

할 수 있습니다에게 포스트 당신의 gridview 과 데이터를 결합하는 데 사용할 수 있습니다 그리드 및 페이징을 사용하여 데이터를 가져 오는 데 사용하는 코드 - 바인딩? – TheVillageIdiot

답변

0

당신은 여전히 ​​데이터 소스를 다시 쿼리 및합니다 (PageIndex 설정과 함께) 당신의 gridview를 리 바인드해야 페이징 방법을 쓰기.

0

당신은 당신의 이미지 컨트롤에서이 작업을 수행 할 수있는 데이터베이스에 저장된 이미지 만 명

String.Format("images/{0}",Eval("photo")) 

및 혜택 등으로 이미지 URL에 대한 데이터 바인딩을 설정 템플릿 열

을 가지고 있다고 가정 당신이 당신의 페이징 방법 당신에게 를 쓸 때

여전히 데이터 소스 를 다시 조회하고 재치 함께 (당신의 gridview를 리 바인드해야 말했다 h PageIndex 설정).

당신이

protected void fillData() 
    { 
     da = new SqlDataAdapter("select * from t1", con); 
     ds = new DataSet(); 
     da.Fill(ds); 
     GridView1.DataSource = ds; 
     GridView1.DataBind(); 
    } 

로 데이터베이스에서 레코드를 가져 오는 방법을 선언하고 paging_indexChanging 기능

GridView1.PageIndex = e.NewPageIndex; 
fillData();