Click here to Skip to main content
15,892,298 members
Articles / Web Development / ASP.NET
Article

Changing a column in multiple DataGrid rows using checkboxes

Rate me:
Please Sign up or sign in to vote.
2.90/5 (21 votes)
19 Nov 20031 min read 86.1K   39   7
This article demonstrates how to apply a dropdownlist value to multiple rows in a DataGrid.

Sample Image - chk.gif

Introduction

This article will demonstrate how to change the value of a DataGrid column in multiple rows using checkboxes. This is a very common problem and it's easily implementable, so without much ado, let's get to the point.

Before I start, though, I'll put forward one assumption I make in this article, make sure your code meets the underlying requirement, otherwise you'll have to do some extra work.

I'll assume that the data bound to the grid is also editable through some object in your code (in other words, DataGrid columns are properties of one object) and you have an update routine for this object. For example, in our case, the object we're using is PurchaseOrder, and the column (property) is ApprovalStatus.

First off, let's start with a simple bind routine. The getApproverPOs function simply returns a DataTable object, you can replace it with your own DataTable.

VB
Sub BindGrid()
    dgPO.DataSource = PurchaseOrder.getApproverPOs
    dgPO.DataBind()
End Sub

In our example, we have a dropdown named lstStatus and a button named btnApply.

The Iterate routine which follows next will loop through each row and see if the checkbox (named chk) in the DataGrid's first template column is checked, if so, it will load PurchaseOrder, set a new ApprovalStatus, and update the changes.

VB
Public Sub Iterate() 
 Dim DGItem As DataGridItem
 Dim chkSel As System.Web.UI.WebControls.CheckBox
 Dim po As PurchaseOrder
 For Each DGItem In dgPO.Items
  chkSel = DGItem.FindControl("chk")
  If chkSel.Checked Then
    po = PurchaseOrder.getPO(DGItem.Cells(1).Text) 'pass the po number to get
    po.ApprovalStatus = lstStatus.SelectedItem.Value
    'send an email to original PO poster
    PurchaseOrder.NotifyPoster(po)
    po.Update()
  End If
 Next
End Sub

And finally, we need an event handler for our button which will point to the Sub above. We use Response.Redirect in the end to refresh the checkboxes, as well as the ApprovalStatus column.

VB
Private Sub btnApply_Click(ByVal sender _
  As System.Object, ByVal e As System.EventArgs) _
  Handles btnApply.Click
    Iterate()
    Response.Redirect("thissamefile.aspx")
End Sub

That's all there is! Hope this was helpful.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 5 Pin
Manoj Kumar Choubey7-Feb-12 19:29
professionalManoj Kumar Choubey7-Feb-12 19:29 
GeneralUsing checkbox in autogenerated datagrid Pin
ashasprabhu20-Jun-07 21:12
ashasprabhu20-Jun-07 21:12 
QuestionValue in TextBox should be changed to required formate Pin
kishore19@hotmail.com28-Dec-06 6:45
kishore19@hotmail.com28-Dec-06 6:45 
QuestionHow to add the multiple edit in this auto generated script Pin
Anonymous4-Sep-05 16:20
Anonymous4-Sep-05 16:20 
How to add the multiple edit in this auto generated script using asp.net maker
on APPROVAL & DATE_APP field.
Please help

<%@ Page Language="VB" %>
<%@ OutputCache Location="None" %>
<%@ Import Namespace="System.ComponentModel" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>


<title>






<%@ Register TagPrefix="ew" TagName="db" Src="ewdb.ascx" %>
<ew:db id="ewdb" runat="server">
<%@ Register TagPrefix="ew" TagName="header" Src="ewheader.ascx" %>
<ew:header id="ewheader" runat="server">
<form
method="post" runat="server">
TABLE: SIM APPROVE

<%@ Register TagPrefix="ewv" NameSpace="EW.Validators" Assembly="ewvalidators" %>

<asp:validationsummary id="xevs_SIM_ACTIVE" cssclass="aspnetmaker" runat="server"
="" headertext="The following errors occur:" showsummary="False" display="None" showmessagebox="True" forecolor="#FF0000">

<asp:linkbutton id="btnClearSearch" text="Show all" onclick="btnClearSearch_Click" cssclass="aspnetmaker" runat="server">
<asp:hyperlink id="lnkSearch" text="Advanced Search" navigateurl="sim_activesearch.aspx" cssclass="aspnetmaker" runat="server">

<asp:label id="lblMessage" forecolor="#FF0000" cssclass="aspnetmaker" runat="server">
<asp:label id="lblSql" cssclass="aspnetmaker" runat="server">

<% '-- Numeric Pager start -- %>
<asp:panel id="pnlPager" runat="server">

<asp:placeholder id="ctlNumericPages" runat="server"> 
Records <asp:label id="lblStartRec" runat="server"> to <asp:label id="lblStopRec" runat="server"> of <asp:label id="lblTotalRecs" runat="server">

<asp:label id="lblRecordCount" visible="False" text="0" runat="server">
<asp:label id="lblCurrentIndex" visible="False" text="0" runat="server">
<asp:label id="lblPageSize" visible="False" text="10" runat="server">
<asp:label id="lblNoOfPageLinks" visible="False" text="10" runat="server">



<% '-- Numeric Pager end -- %>
<asp:panel id="pnlDataGrid" runat="server">
<asp:datagrid id="ctlList" runat="server"
="" datakeyfield="SIM_NO" onitemcommand="ctlList_ItemCommand" backcolor="#CCCCCC" cellpadding="2" cellspacing="1" borderwidth="0" cssclass="ewTable" allowpaging="False" allowsorting="True" onsortcommand="ctlList_Sort" onitemdatabound="ctlList_ItemDataBound" autogeneratecolumns="False">
<headerstyle verticalalign="Top" backcolor="#336699" forecolor="#FFFFFF" cssclass="aspnetmaker">
<alternatingitemstyle backcolor="#F5F5F5" cssclass="aspnetmaker">
<itemstyle backcolor="#FFFFFF" cssclass="aspnetmaker">
<columns>
<asp:templatecolumn>
<itemtemplate>
<asp:hyperlink id="lnkEdit" text="Edit" navigateurl="<%# "sim_activeedit.aspx?key=" + DataBinder.Eval(Container.DataItem, "SIM_NO").ToString() %>" cssclass="aspnetmaker" runat="server">


<asp:templatecolumn headertext="SIM NO (*)" sortexpression="SIM_NO">
<itemtemplate>
<asp:label id="x_SIM_NO" cssclass="aspnetmaker" runat="server">


<asp:templatecolumn headertext="SIM STATUS (*)" sortexpression="SIM_STATUS">
<itemtemplate>
<asp:label id="x_SIM_STATUS" cssclass="aspnetmaker" runat="server">


<asp:templatecolumn headertext="DATE (*)" sortexpression="DATE">
<itemtemplate>
<asp:label id="x_DATE" cssclass="aspnetmaker" runat="server">


<asp:templatecolumn headertext="COMM " sortexpression="COMM">
<itemtemplate>
<asp:label id="x_COMM" cssclass="aspnetmaker" runat="server">



<asp:templatecolumn headertext="APPROVAL " sortexpression="APPROVAL">
<itemtemplate>
<asp:label id="x_APPROVAL" cssclass="aspnetmaker" runat="server">


<asp:templatecolumn headertext="DATE APP (*)" sortexpression="DATE_APP">
<itemtemplate>
<asp:label id="x_DATE_APP" cssclass="aspnetmaker" runat="server">







<%'-- start Detail Controls --%>
<%'-- end Detail Controls --%>

<%@ Register TagPrefix="ew" TagName="footer" Src="ewfooter.ascx" %>
<ew:footer id="ewfooter" runat="server">



Dim sDbWhere As String
Dim sKey As String
Dim sTmp As String

' User Login Name
Dim sLoginName As String

' User Level Related
Dim iAllowAdd As Integer = 1
Dim iAllowDelete As Integer = 2
Dim iAllowEdit As Integer = 4
Dim iAllowView As Integer = 8
Dim iAllowList As Integer = 8
Dim iAllowSearch As Integer = 8
Dim iAllowAdmin As Integer = 16
Dim bCanAdd As Boolean
Dim bCanDelete As Boolean
Dim bCanEdit As Boolean
Dim bCanView As Boolean
Dim bCanList As Boolean
Dim bCanSearch As Boolean
Dim bCanAdmin As Boolean
Dim iCurIdx As Integer
Dim iCurSec As Integer

'*********************
' Page Load Handler
'*********************

Private Sub Page_Load(ByVal s As System.Object, ByVal e As System.EventArgs)

' Load Login Name
LoadLoginName()

' Load User Level Secruity
LoadUserLevel()

' Disable Controls if necessary
If Not bCanEdit Then
ctlList.Columns(0).Visible = False
End If

' Set and Clear Message
lblMessage.Text = Session("msg")
Session("msg") = ""
If Not Page.IsPostback Then

' Reload Page Properties from Session
ReLoadPageProperties()

' Get Advanced Search Parameters
AdvancedSearchRtn()

' Bind Data Control
BindData()
Else

' Regenerate Dynamic Control first for Numeric Pager
GenNumericLinks(CInt(lblRecordCount.Text), CInt(lblCurrentIndex.Text), _
CInt(lblPageSize.Text), CInt(lblNoOfPageLinks.Text))
Page.Validate()
If (Not Page.IsValid) Then
Dim sMsg As String
Dim oValidator As IValidator
For Each oValidator In Page.Validators
If oValidator.IsValid = False Then
sMsg += "<br />" & oValidator.ErrorMessage
End If
Next
lblMessage.Text = sMsg
End If
End If
End Sub

'****************
' Sort Handler
'****************

Protected Sub ctlList_Sort(ByVal s As Object, ByVal e As DataGridSortCommandEventArgs)
Dim sSortExpression As String, sSortOrder As String

' Update the Current Page Number from the Parameter Values
sSortExpression = e.SortExpression.ToString()
sSortOrder = ""
SortRtn(sSortExpression,sSortOrder)

'Bind Data Control
BindData()
End Sub

'****************
' Sort Routine
'****************

Private Sub SortRtn(ByVal sSortExpression As String, ByVal sSortOrder As String)

' Reset Page Properties
ResetPageProperties()

' Load Sort Parameters from Session
If sSortExpression = Session("SIM_ACTIVE_SortExpression") Then
If Session("SIM_ACTIVE_SortOrder") = "ASC" Then
Session("SIM_ACTIVE_SortOrder") = "DESC"
Else
Session("SIM_ACTIVE_SortOrder") = "ASC"
End If
Else
If sSortOrder = "" Then
Session("SIM_ACTIVE_SortOrder") = "ASC"
Else
Session("SIM_ACTIVE_SortOrder") = sSortOrder
End If
End If
Session("SIM_ACTIVE_SortExpression") = sSortExpression

' Field SIM_NO
If Session("SIM_ACTIVE_SortExpression") = "SIM_NO" Then
If Session("SIM_ACTIVE_SortOrder") = "ASC" Then
ctlList.Columns(1).HeaderText = "SIM NO (*) <span class=""ewTableOrderIndicator"">5</font>"
Else
ctlList.Columns(1).HeaderText = "SIM NO (*) <span class=""ewTableOrderIndicator"">6</font>"
End If
Else
ctlList.Columns(1).HeaderText = "SIM NO (*)"
End If

' Field SIM_STATUS
If Session("SIM_ACTIVE_SortExpression") = "SIM_STATUS" Then
If Session("SIM_ACTIVE_SortOrder") = "ASC" Then
ctlList.Columns(2).HeaderText = "SIM STATUS (*) <span class=""ewTableOrderIndicator"">5</font>"
Else
ctlList.Columns(2).HeaderText = "SIM STATUS (*) <span class=""ewTableOrderIndicator"">6</font>"
End If
Else
ctlList.Columns(2).HeaderText = "SIM STATUS (*)"
End If

' Field DATE
If Session("SIM_ACTIVE_SortExpression") = "DATE" Then
If Session("SIM_ACTIVE_SortOrder") = "ASC" Then
ctlList.Columns(3).HeaderText = "DATE (*) <span class=""ewTableOrderIndicator"">5</font>"
Else
ctlList.Columns(3).HeaderText = "DATE (*) <span class=""ewTableOrderIndicator"">6</font>"
End If
Else
ctlList.Columns(3).HeaderText = "DATE (*)"
End If

' Field COMM
If Session("SIM_ACTIVE_SortExpression") = "COMM" Then
If Session("SIM_ACTIVE_SortOrder") = "ASC" Then
ctlList.Columns(4).HeaderText = "COMM <span class=""ewTableOrderIndicator"">5</font>"
Else
ctlList.Columns(4).HeaderText = "COMM <span class=""ewTableOrderIndicator"">6</font>"
End If
Else
ctlList.Columns(4).HeaderText = "COMM "
End If

' Field APPROVAL
If Session("SIM_ACTIVE_SortExpression") = "APPROVAL" Then
If Session("SIM_ACTIVE_SortOrder") = "ASC" Then
ctlList.Columns(5).HeaderText = "APPROVAL <span class=""ewTableOrderIndicator"">5</font>"
Else
ctlList.Columns(5).HeaderText = "APPROVAL <span class=""ewTableOrderIndicator"">6</font>"
End If
Else
ctlList.Columns(5).HeaderText = "APPROVAL "
End If

' Field DATE_APP
If Session("SIM_ACTIVE_SortExpression") = "DATE_APP" Then
If Session("SIM_ACTIVE_SortOrder") = "ASC" Then
ctlList.Columns(6).HeaderText = "DATE APP (*) <span class=""ewTableOrderIndicator"">5</font>"
Else
ctlList.Columns(6).HeaderText = "DATE APP (*) <span class=""ewTableOrderIndicator"">6</font>"
End If
Else
ctlList.Columns(6).HeaderText = "DATE APP (*)"
End If
End Sub

'****************************************
' Reload Page Properties from Sessions
'****************************************

Private Sub ReloadPageProperties()

' Check if Reset Page
Dim sCmd As String = Request.QueryString("cmd")
If sCmd = "reset" Then
Session("SIM_ACTIVE_DbWhere") = "" ' Clear Search
Exit Sub
ElseIf sCmd = "resetall" Then
Session("SIM_ACTIVE_SortExpression") = "" ' Clear Sort
Session("SIM_ACTIVE_SortOrder") = ""
Session("SIM_ACTIVE_DbWhere") = "" ' Clear Search
Exit Sub
End If

' Reload Page/Record Index from Session
Dim sCurrentRecordIndex As String = Session("SIM_ACTIVE_recordindex")
If IsNumeric(sCurrentRecordIndex) Then
lblCurrentIndex.Text = sCurrentRecordIndex
End If
End Sub

'*************************
' Reset Page Properties
'*************************

Private Sub ResetPageProperties()

' Clear Page/Record Index
Session("SIM_ACTIVE_recordindex") = "0"
lblCurrentIndex.Text = "0"
End Sub

'**************************
' Advanced Search Routine
'**************************

Private Sub AdvancedSearchRtn()
Dim sTmp As String
Dim sTmpParm As String
Dim sArrParm() As String
Dim sSrchString As String
sSrchString = ""
sTmp = Request.QueryString("x_NO")
If sTmp <> "" Then
sTmpParm = Request.QueryString("z_NO")
sArrParm = Split(sTmpParm,",")
sSrchString += "[NO] " & _
sArrParm(0) & " " & sArrParm(1) & sTmp & sArrParm(2) & " AND "
End If
sTmp = Request.QueryString("x_SIM_NO")
If sTmp <> "" Then
sTmpParm = Request.QueryString("z_SIM_NO")
sArrParm = Split(sTmpParm,",")
sSrchString += "[SIM_NO] " & _
sArrParm(0) & " " & sArrParm(1) & sTmp & sArrParm(2) & " AND "
End If
sTmp = Request.QueryString("x_SIM_STATUS")
If sTmp <> "" Then
sTmpParm = Request.QueryString("z_SIM_STATUS")
sArrParm = Split(sTmpParm,",")
sSrchString += "[SIM_STATUS] " & _
sArrParm(0) & " " & sArrParm(1) & sTmp & sArrParm(2) & " AND "
End If
sTmp = Request.QueryString("x_DATE")
If sTmp <> "" Then
sTmpParm = Request.QueryString("z_DATE")
sArrParm = Split(sTmpParm,",")
sSrchString += "[DATE] " & _
sArrParm(0) & " " & sArrParm(1) & sTmp & sArrParm(2) & " AND "
End If
sTmp = Request.QueryString("x_COMM")
If sTmp <> "" Then
sTmpParm = Request.QueryString("z_COMM")
sArrParm = Split(sTmpParm,",")
sSrchString += "[COMM] " & _
sArrParm(0) & " " & sArrParm(1) & sTmp & sArrParm(2) & " AND "
End If
sTmp = Request.QueryString("x_APPROVAL")
If sTmp <> "" Then
sTmpParm = Request.QueryString("z_APPROVAL")
sArrParm = Split(sTmpParm,",")
sSrchString += "[APPROVAL] " & _
sArrParm(0) & " " & sArrParm(1) & sTmp & sArrParm(2) & " AND "
End If
sTmp = Request.QueryString("x_DATE_APP")
If sTmp <> "" Then
sTmpParm = Request.QueryString("z_DATE_APP")
sArrParm = Split(sTmpParm,",")
sSrchString += "[DATE_APP] " & _
sArrParm(0) & " " & sArrParm(1) & sTmp & sArrParm(2) & " AND "
End If
If Len(sSrchString) > 0 Then
sSrchString = Left(sSrchString,Len(sSrchString)-5) ' Remove Last AND Operator
ResetPageProperties() ' Reset Page Properties
Session("SIM_ACTIVE_DbWhere") = sSrchString
End If
End Sub

'************************
' Clear Search Handler
'************************

Private Sub btnClearSearch_Click(ByVal s As System.Object, ByVal e As System.EventArgs)
ResetPageProperties() ' Reset Page Properties
Session("SIM_ACTIVE_DbWhere") = ""

' Bind to Data Control
BindData()
End Sub

'************************
' Bind Data to Control
'************************

Sub BindData()

' Get Connection String
Dim sConnStr As String = ewDB.ewConnStr

' Construct SQL statement
Dim sSelect As String
sSelect = "SELECT * FROM [SIM_ACTIVE]"
sDbWhere = Session("SIM_ACTIVE_DbWhere")

' Security Checking
If Not bCanList Then
lblMessage.Text = "No Permission"
If sDbWhere <> "" Then sDbWhere += " AND "
sDbWhere += "(0=1)" ' Filter out All Records
End If

' Construct WHERE Clause
If sDbWhere <> "" Then
sSelect += " WHERE " & sDbWhere
End If

' Construct ORDER BY Clause
Dim sDefaultOrder As String = ""
Dim sDefaultOrderType As String = ""
If Session("SIM_ACTIVE_SortExpression") <> "" Then
sSelect += " ORDER BY [" & Session("SIM_ACTIVE_SortExpression") & "] " & Session("SIM_ACTIVE_SortOrder")
ElseIf sDefaultOrder <> "" Then
sSelect += " ORDER BY [" & sDefaultOrder & "] " & sDefaultOrderType
SortRtn(sDefaultOrder,sDefaultOrderType)
End If
lblSql.Text = sSelect

' Default DataView Object
Dim dvWrk As DataView

' Get DataView
' For custom Numeric Pager

Dim sTable As String
sTable = "SIM_ACTIVE"
lblRecordCount.Text = CStr(ewDB.ewRecordCount(sConnStr,sTable,sDbWhere))
lblTotalRecs.Text = lblRecordCount.Text
lblStartRec.Text = CStr(CLng(lblCurrentIndex.Text) + 1)
If CLng(lblStartRec.Text) + CLng(lblPageSize.Text) - 1 > CLng(lblRecordCount.Text) Then
lblStopRec.Text = lblRecordCount.Text
Else
lblStopRec.Text = CStr(CLng(lblStartRec.Text) + CLng(lblPageSize.Text) - 1)
End If

' Create Numeric Links
GenNumericLinks(CLng(lblRecordCount.Text), CLng(lblCurrentIndex.Text), _
CLng(lblPageSize.Text), CLng(lblNoOfPageLinks.Text))
dvWrk = ewDB.ewDataViewPage(sConnStr, sSelect, CLng(lblCurrentIndex.Text), CLng(lblPageSize.Text))

' Check Dataview Object
If IsNothing(dvWrk) Then ' Error
lblMessage.Text = session("dberrmsg")
lblSql.Visible = True
Exit Sub
Else ' Normal
lblSql.Visible = False
End If

' Set the DataSource property
ctlList.DataSource = dvWrk

' Bind to Data Control
ctlList.DataBind()

' Hide Grid/Pager if No Records Found
If dvWrk.Count = 0 Then
pnlDataGrid.Visible = False
If lblMessage.Text = "" Then
lblMessage.Text = "No records found"
End If
Else
pnlDataGrid.Visible = True
End If
End Sub

'************************
' Item Command Handler
'************************

Sub ctlList_ItemCommand(ByVal s As Object, ByVal e As DataGridCommandEventArgs)
Dim sSortExpression As String, sSortOrder As String
Dim sKey As String

' Master/Detail Link
If e.CommandName = "Detail" Then
ctlList.SelectedIndex = e.Item.ItemIndex
End If
End Sub

'***************************
' Item Data Bound Handler
'***************************

Private Sub ctlList_ItemDataBound(ByVal s As Object, _
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)

' List View
If e.Item.ItemType = ListItemType.Item Or _
e.Item.ItemType = ListItemType.AlternatingItem Or _
e.Item.ItemType = ListItemType.SelectedItem Then

' Field SIM_NO
If Not IsDBNull(CType(e.Item.DataItem, DataRowView)("SIM_NO")) Then
sTmp = CType(e.Item.DataItem, DataRowView)("SIM_NO")
CType(e.Item.FindControl("x_SIM_NO"),Label).Text = sTmp
End If

' Field SIM_STATUS
If Not IsDBNull(CType(e.Item.DataItem, DataRowView)("SIM_STATUS")) Then
sTmp = CType(e.Item.DataItem, DataRowView)("SIM_STATUS")
CType(e.Item.FindControl("x_SIM_STATUS"),Label).Text = sTmp
End If

' Field DATE
If Not IsDBNull(CType(e.Item.DataItem, DataRowView)("DATE")) Then
sTmp = CType(e.Item.DataItem, DataRowView)("DATE")
CType(e.Item.FindControl("x_DATE"),Label).Text = sTmp
End If

' Field COMM
If Not IsDBNull(CType(e.Item.DataItem, DataRowView)("COMM")) Then
sTmp = FormatCurrency(CType(CType(e.Item.DataItem, DataRowView)("COMM"),Double),2,-2,-2,-2)
CType(e.Item.FindControl("x_COMM"),Label).Text = sTmp
End If

' Field APPROVAL
If Not IsDBNull(CType(e.Item.DataItem, DataRowView)("APPROVAL")) Then
Select Case CType(e.Item.DataItem, DataRowView)("APPROVAL")
Case "YES"
CType(e.Item.FindControl("x_APPROVAL"),Label).Text = "YES"
Case "NO"
CType(e.Item.FindControl("x_APPROVAL"),Label).Text = "NO"
Case ""
CType(e.Item.FindControl("x_APPROVAL"),Label).Text = ""
End Select
End If

' Field DATE_APP
If Not IsDBNull(CType(e.Item.DataItem, DataRowView)("DATE_APP")) Then
sTmp = CType(e.Item.DataItem, DataRowView)("DATE_APP")
CType(e.Item.FindControl("x_DATE_APP"),Label).Text = sTmp
End If
End If
End Sub

'*******************************
' Numeric Pager Click Handler
'*******************************

Sub NumericPages_Click(ByVal s As System.Object, ByVal e As System.EventArgs)
Dim lRecNo As Long

' Handles the Event of Numeric Buttons
lRecNo = CLng(CType(s, LinkButton).CommandArgument)
If lRecNo < 0 Then
lRecNo = 0
ElseIf lRecNo > CLng(lblRecordCount.Text) Then
lRecNo = CLng(lblRecordCount.Text) - 1
End If
lblCurrentIndex.Text = lRecNo

' Save Record Index
Session("SIM_ACTIVE_recordindex") = lblCurrentIndex.Text
BindData()
End Sub

'*********************************
' Generate Numeric Link Buttons
'*********************************

Sub GenNumericLinks(ByVal iTotalRecs As Integer, ByVal iCurrentRec As Integer, ByVal iPageSize As Integer, ByVal iPageLink As Integer)
Dim btnPageLink As LinkButton
Dim ltrSpacer As Literal
Dim iPrevPageIndex, iNextPageIndex As Integer
Dim iPrevBlockIndex, iNextBlockIndex As Integer
Dim iBasePageNo, iThisPageIndex, iThisPageNo As Integer
iPrevPageIndex = iCurrentRec - iPageSize
If iPrevPageIndex < 1 Then
iPrevPageIndex = 0
End If
iNextPageIndex = iCurrentRec + iPageSize
If iCurrentRec >= iPageSize * iPageLink Then
iPrevBlockIndex = ((iCurrentRec+1)\(iPageSize*iPageLink)-1)*(iPageSize*iPageLink)
Else
iPrevBlockIndex = -1
End If
If ((iCurrentRec+1)\(iPageSize*iPageLink)+1)*(iPageSize*iPageLink) < iTotalRecs Then
iNextBlockIndex = ((iCurrentRec+1)\(iPageSize*iPageLink)+1)*(iPageSize*iPageLink)
Else
iNextBlockIndex = -1
End If

' Clear All Controls
ctlNumericPages.Controls.Clear

' Generate Previous Link
If iCurrentRec > 0 Then
btnPageLink = New LinkButton() ' Add Numeric Link
btnPageLink.id = "PagerPrev"
btnPageLink.Text = "Prev"
btnPageLink.CommandName = "onClick"
btnPageLink.CommandArgument = iPrevPageIndex
ctlNumericPages.Controls.Add(btnPageLink)
AddHandler btnPageLink.Click, AddressOf NumericPages_Click
ltrSpacer = New Literal() ' Add spacer
ltrSpacer.Text = "&nbsp;"
ctlNumericPages.Controls.Add(ltrSpacer)
End If

' Generate Previous Block Link
If iPrevBlockIndex >= 0 Then
btnPageLink = New LinkButton() ' Add Numeric Link
btnPageLink.id = "PagerPrevBlock"
btnPageLink.Text = "..."
btnPageLink.CommandName = "onClick"
btnPageLink.CommandArgument = iPrevBlockIndex
ctlNumericPages.Controls.Add(btnPageLink)
AddHandler btnPageLink.Click, AddressOf NumericPages_Click
ltrSpacer = New Literal() ' Add spacer
ltrSpacer.Text = "&nbsp;"
ctlNumericPages.Controls.Add(ltrSpacer)
End If

' Generate Numeric Link in PlaceHolder if more than 1 page
Dim i As Integer
If iTotalRecs > iPageSize Then
iBasePageNo = ((iCurrentRec+1) \ (iPageSize*iPageLink)) * iPageLink
For i = 1 To iPageLink
iThisPageNo = i + iBasePageNo
iThisPageIndex = (iThisPageNo-1) * iPageSize
If iThisPageIndex <= iTotalRecs Then
btnPageLink = New LinkButton() ' Add Numeric Link
btnPageLink.id = "Pager" & iThisPageNo
btnPageLink.Text = iThisPageNo
btnPageLink.CommandName = "onClick"
btnPageLink.CommandArgument = iThisPageIndex
ctlNumericPages.Controls.Add(btnPageLink)
If iThisPageIndex <> iCurrentRec Then
AddHandler btnPageLink.Click, AddressOf NumericPages_Click
Else
btnPageLink.enabled = False
End If
ltrSpacer = New Literal() ' Add spacer
ltrSpacer.Text = "&nbsp;"
ctlNumericPages.Controls.Add(ltrSpacer)
End If
Next
End If

' Generate Next Block Link
If iNextBlockIndex >= 0 Then
btnPageLink = New LinkButton() ' Add Numeric Link
btnPageLink.id = "PagerNextBlock"
btnPageLink.Text = "..."
btnPageLink.CommandName = "onClick"
btnPageLink.CommandArgument = iNextBlockIndex
ctlNumericPages.Controls.Add(btnPageLink)
AddHandler btnPageLink.Click, AddressOf NumericPages_Click
ltrSpacer = New Literal() ' Add spacer
ltrSpacer.Text = "&nbsp;"
ctlNumericPages.Controls.Add(ltrSpacer)
End If

' Generate Next Link
If iNextPageIndex < iTotalRecs Then
btnPageLink = New LinkButton() ' Add Numeric Link
btnPageLink.id = "PagerNext"
btnPageLink.Text = "Next"
btnPageLink.CommandName = "onClick"
btnPageLink.CommandArgument = iNextPageIndex
ctlNumericPages.Controls.Add(btnPageLink)
AddHandler btnPageLink.Click, AddressOf NumericPages_Click
ltrSpacer = New Literal() ' Add spacer
ltrSpacer.Text = "&nbsp;"
ctlNumericPages.Controls.Add(ltrSpacer)
End If
End Sub

'************************
' Load Login Name Routine
'************************

Private Sub LoadLoginName()
Dim sWrk As String = Page.User.Identity.Name
Dim sArrWrk As String() = Split(sWrk,",")

' Get User ID saved in User Name
If ubound(sArrWrk) >= 0 Then
sLoginName = sArrWrk(0)
Else
sLoginName = "" ' Not Found
End If
End Sub

'***************************
' Load User Level Routine
'***************************

Private Sub LoadUserLevel()
Dim sWrk As String = Page.User.Identity.Name
Dim sArrWrk As String() = Split(sWrk,",")

' Security Defined for Table
Dim iArrSec(2) As Integer
iArrSec(0) = 15
iArrSec(1) = 8
iArrSec(2) = 13

' Get User Level saved in User Name
If ubound(sArrWrk) >= 0 Then
iCurIdx = CInt(sArrWrk(ubound(sArrWrk)))
Else
iCurIdx = 0 ' Not Found
End If

' Get Current Table Security
iCurSec = 0
If isnumeric(iCurIdx) Then
If iCurIdx = -1 Then ' System Administrator
iCurSec = 31
ElseIf iCurIdx > 0 And iCurIdx <= ubound(iArrSec) + 1 Then
iCurSec = iArrSec(iCurIdx-1)
End If
End If

' Set up User Level Security
bCanAdd = iCurSec And iAllowAdd
bCanDelete = iCurSec And iAllowDelete
bCanEdit = iCurSec And iAllowEdit
bCanView = iCurSec And iAllowView
bCanList = iCurSec And iAllowList
bCanSearch = iCurSec And iAllowSearch
bCanAdmin = iCurSec And iAllowAdmin
End Sub

GeneralMultiple checkboxes selection. PLEASE HELP. Pin
misssBlur3-Apr-04 19:56
misssBlur3-Apr-04 19:56 
GeneralChecking if an item is checked before post back Pin
Esterbarn27-Nov-03 22:15
Esterbarn27-Nov-03 22:15 
GeneralRe: Checking if an item is checked before post back Pin
Mesrop Simonian2-Dec-03 6:52
Mesrop Simonian2-Dec-03 6:52 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.