custom paging

Last post 06-15-2009 4:51 AM by Qin Dian Tang - MSFT. 5 replies.

Sort Posts:

  • custom paging

    06-10-2009, 12:06 AM
    • Member
      650 point Member
    • Dman100
    • Member since 07-11-2006, 7:06 PM
    • Posts 408

    I have a formview on my page that is bound declaratively using an ObjectDataSource.  Due to screen real estate, not all the data can be displayed in the formview.

    Is there to create a custom paging method that would count the number of characters and display the first 500 characters, then have a paging link...i.e. "read more" that would display the next 500 characters, etc. etc.

    See below for my formview and page code.

     

    1    <%@ Page Title="Dwayne Epps :: Bio" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="About.aspx.cs" Inherits="About" %>
    2    
    3    <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    4    </asp:Content>
    5    <asp:Content ID="Content2" ContentPlaceHolderID="topleft" Runat="Server">
    6        <asp:Image ID="Image2" runat="server" ImageUrl="~/images/D2photo.jpg" />
    7    </asp:Content>
    8    <asp:Content ID="Content3" ContentPlaceHolderID="topright" Runat="Server">
    9       <asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1">
    10           <ItemTemplate>
    11               <h4><asp:Label ID="item_titleLabel" runat="server" Text='<%# Bind("item_title") %>' /></h4>
    12               <asp:Label ID="item_bodyLabel" runat="server" Text='<%# Bind("item_body") %>' />
    13           </ItemTemplate>
    14       </asp:FormView>
    15       <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
    16           OldValuesParameterFormatString="original_{0}" 
    17           SelectMethod="GetWebItemBySitekey" TypeName="Library.BLL.WebItemBL">
    18           <SelectParameters>
    19               <asp:QueryStringParameter Name="sitekey" QueryStringField="sitekey" 
    20                   Type="String" />
    21           </SelectParameters>
    22       </asp:ObjectDataSource> 
    23   </asp:Content>
    24   <asp:Content ID="Content4" ContentPlaceHolderID="bottomleft" Runat="Server">
    25   </asp:Content>
    26   <asp:Content ID="Content5" ContentPlaceHolderID="bottomright" Runat="Server">
    27   </asp:Content>
    28   
    
     

    Thanks for any help.
    Regards.

  • Re: custom paging

    06-10-2009, 5:08 AM
    • Contributor
      2,786 point Contributor
    • shabirhakim1
    • Member since 03-31-2009, 11:33 AM
    • Bangalore
    • Posts 452
    Hi Author:Steven.S Generate thumbnails via your images Here is the code to stream the images to the client or save to a local file system. using System; using System.IO; namespace Swafford { /// /// Creates a thumbnail image from a file spec in the calling URL. /// public class GenerateThumbnail : System.Web.UI.Page { /// /// Handles the Click event of the GenButton control. /// /// The source of the event. /// The instance containing the event data. private void GenButton_Click(object sender, System.EventArgs e) { string _file = Request.QueryString["file"]; System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(file)); System.Drawing.Image thumbnailImage = image.GetThumbnailImage(128, 128, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero); MemoryStream imageStream = new MemoryStream(); thumbnailImage.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] imageContent = new Byte[imageStream.Length]; imageStream.Position = 0; imageStream.Read(imageContent, 0, (int)imageStream.Length); Response.ContentType = "image/jpeg"; Response.BinaryWrite(imageContent); this.WriteToFile(@"c:\temp\thumb.jpg", imageContent); } /// /// Writes to file. /// /// The STR path. /// The buffer. public void WriteToFile(string strPath, byte[] Buffer) { FileStream newFile = new FileStream(strPath, FileMode.Create); newFile.Write(Buffer, 0, Buffer.Length); newFile.Close(); } } } rEGARDS HAKIM
    Good is Never Good .if better is accepted
  • Re: custom paging

    06-10-2009, 9:23 AM
    • Member
      650 point Member
    • Dman100
    • Member since 07-11-2006, 7:06 PM
    • Posts 408

    Was this reply meant for my post?  This looks to be how to generate thrumbnail images.

  • Re: custom paging

    06-11-2009, 2:19 PM
    • Member
      650 point Member
    • Dman100
    • Member since 07-11-2006, 7:06 PM
    • Posts 408

    bump...any suggestions on this?  I was trying the jquery truncate plugin, but that doesn't have paging functionality.  Maybe a vertical scroll text jquery plugin?

  • Re: custom paging

    06-11-2009, 11:04 PM
    • Member
      650 point Member
    • Dman100
    • Member since 07-11-2006, 7:06 PM
    • Posts 408

    I'm hoping some jQuery expert can help me out.  I found a pager plugin that uses jQuery:

    http://rikrikrik.com/jquery/pager/

    I have the pager working, but it doesn't work exactly as I need.

    It pages by html tag.  So, if you have text with 8 paragrapths, it will page thru each paragraph.

    Is there a way to modify the code to page by div height or character length?

    This is very close to what I need, but I just need a way to show about 500 characters per page.

    Here is the code:

     

    $.fn.pager = function(clas, options) {
    	
    	var settings = {		
    		navId: 'nav',
    		navClass: 'nav',
    		navAttach: 'append',
    		highlightClass: 'highlight',
    		prevText: '«',
    		nextText: '»',
    		linkText: null,
    		linkWrap: null,
    		height: null
    	}
    	if(options) $.extend(settings, options);
    	
    		
    	return this.each( function () {
    		
    		var me = $(this);
    		var size;
    	  	var i = 0;		
    		var navid = '#'+settings.navId;
    		
    		function init () {
    			size = $(clas, me).not(navid).size();
    			if(settings.height == null) {			
    				settings.height = getHighest();
    			}
    			if(size > 1) {
    				makeNav();
    				show();
    				highlight();
    			}			
    			sizePanel();
    			if(settings.linkWrap != null) {
    				linkWrap();
    			}
    		}
    		function makeNav () {		
    			var str = '<div id="'+settings.navId+'" class="'+settings.navClass+'">';
    			str += '<a href="#" rel="prev">'+settings.prevText+'</a>';
    			for(var i = 0; i < size; i++) {
    				var j = i+1;
    				str += '<a href="#" rel="'+j+'">';
    				str += (settings.linkText == null) ? j : settings.linkText[j-1];				
    				str += '</a>';
    			}
    			str += '<a href="#" rel="next">'+settings.nextText+'</a>';
    			str += '</div>';
    			switch (settings.navAttach) {		
    				case 'before':
    					$(me).before(str);
    					break;
    				case 'after':		
    					$(me).after(str);
    					break;
    				case 'prepend':
    					$(me).prepend(str);
    					break;
    				default:
    					$(me).append(str);
    					break;
    			}
    		}
    		function show () {
    			$(me).find(clas).not(navid).hide();
    			var show = $(me).find(clas).not(navid).get(i);
    			$(show).show();
    		}		
    		function highlight () {
    			$(me).find(navid).find('a').removeClass(settings.highlightClass);
    			var show = $(me).find(navid).find('a').get(i+1);			
    			$(show).addClass(settings.highlightClass);
    		}
    
    		function sizePanel () {
    			if($.browser.msie) {
    				$(me).find(clas).not(navid).css( {
    					height: settings.height
    				});	
    			} else {
    				$(me).find(clas).not(navid).css( {
    					minHeight: settings.height
    				});
    			}
    		}
    		function getHighest () {
    			var highest = 0;
    			$(me).find(clas).not(navid).each(function () {
    				
    				if(this.offsetHeight > highest) {
    					highest = this.offsetHeight;
    				}
    			});
    			highest = highest + "px";
    			return highest;
    		}
    		function getNavHeight () {
    			var nav = $(navid).get(0);
    			return nav.offsetHeight;
    		}
    		function linkWrap () {
    			$(me).find(navid).find("a").wrap(settings.linkWrap);
    		}
    		init();
    		$(this).find(navid).find("a").click(function () {
    
    			if($(this).attr('rel') == 'next') {
    				if(i + 1 < size) {
    					i = i+1;
    				}
    			} else if($(this).attr('rel') == 'prev') { 
    				if(i > 0) {	
    					i = i-1;
    				}
    			} else {		
    				var j = $(this).attr('rel');	
    				i = j-1;		
    			}
    			show();
    			highlight();
    			return false;
    		});
    	});	
    }
      
    1    protected void Page_Load(object sender, EventArgs e)
    2        {
    3            LoadScript();
    4        }
    5    
    6        protected void LoadScript()
    7        {
    8            ClientScriptManager csm = Page.ClientScript;
    9            StringBuilder sb = new StringBuilder();
    10   
    11           sb.Append("<script type=\"text/javascript\">\n");
    12           sb.Append("$(document).ready(function () {\n");
    13           sb.Append("$('#pnlTR').pager('p', { \n");
    14           sb.Append("height: '20em'\n");
    15           sb.Append("})\n");
    16           sb.Append("})\n");
    17           sb.Append("</script>");
    18   
    19           csm.RegisterClientScriptBlock(this.GetType(), "sLoadString", sb.ToString());
    20   
    21       }
    
     
  • Re: custom paging

    06-15-2009, 4:51 AM
    Answer
    Qin Dian Tang
    Microsoft Online Community Support

    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Page 1 of 1 (6 items)