Gridview is one of the most popular control in ASP.NET webform. It already provides a lot of functionality out of the box but sometimes our project needs special things like showing one record per page. In this post, I will show you how to achieve this. See the below code its; self-explanatory
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SinglePage.aspx.cs" Inherits="SinglePage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtProductName" runat="server" OnDataBinding="txtDataBind"></asp:TextBox>
<asp:TextBox ID="txtProductid" runat="server"></asp:TextBox>
<asp:Button ID="btnPrevious" runat="server" Text="Previous" OnClick="PrevBtn"></asp:Button>
<asp:Button ID="btnNext" runat="server" Text="Next" OnClick="NextBtn"></asp:Button>
</div>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class SinglePage : System.Web.UI.Page
{
DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{
dt = GetDataTable() as DataTable;
if (!Page.IsPostBack)
{
ViewState["CurrentPos"] = 0;
this.DataBind();
}
}
protected void PrevBtn(object sender, System.EventArgs e)
{
try
{
int CurrentPos = (int)ViewState["CurrentPos"];
if (CurrentPos > 0)
{
CurrentPos -= 1;
}
ViewState["CurrentPos"] = CurrentPos;
this.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
protected void NextBtn(object sender, System.EventArgs e)
{
try
{
int CurrentPos = (int)ViewState["CurrentPos"];
CurrentPos += 1;
if (CurrentPos > dt.Rows.Count)
{
CurrentPos -= 1;
}
ViewState["CurrentPos"] = CurrentPos;
this.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
protected void txtDataBind(Object sender, System.EventArgs e)
{
try
{
int CurrentPos = (int)ViewState["CurrentPos"];
ViewState["CurrentPos"] = CurrentPos;
txtProductid.Text = dt.Rows[CurrentPos]["productid"].ToString();
txtProductName.Text = dt.Rows[CurrentPos]["productname"].ToString();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
private DataTable GetDataTable()
{
//create table
DataTable dt = new DataTable("Product");
dt.Columns.Add("ProductID", Type.GetType("System.Int32"));
dt.Columns.Add("ProductName", Type.GetType("System.String"));
//create fields
DataColumn[] pk = new DataColumn[1];
pk[0] = dt.Columns["ProductID"];
dt.PrimaryKey = pk;
dt.Columns["ProductID"].AutoIncrement = true;
dt.Columns["ProductID"].AutoIncrementSeed = 1;
dt.Columns["ProductID"].ReadOnly = true;
//fill rows
DataRow dr;
for (int x = 1; x <= 10; x++)
{
//make every other one different
if (Math.IEEERemainder(x, 2) == 0)
{
dr = dt.NewRow();
dr["ProductName"] = "Riss";
dt.Rows.Add(dr);
}
else
{
dr = dt.NewRow();
dr["ProductName"] = "Product";
dt.Rows.Add(dr);
}
}
return dt;
}
}