zoukankan
html css js c++ java
GridView 实现自定义分页、排序、查询、添加、编辑、多选删除
运行效果图:
PM_Base.aspx
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
PM_Base.aspx.cs
"
Inherits
=
"
PM_Base
"
EnableEventValidation
=
"
false
"
%>
<!
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
id
="Head1"
runat
="server"
>
<
title
>
基本信息
</
title
>
</
head
>
<
body
>
<
form
id
="form1"
runat
="server"
>
<!--
导航事件按钮
-->
<
table
cellpadding
="0"
cellspacing
="0"
width
="%"
>
<
tr
>
<
td
align
="right"
style
="height: 25px;"
nowrap
="nowrap"
>
<
input
type
="hidden"
id
="HiddenID"
name
="HiddenID"
runat
="server"
/>
<
input
id
="btnView"
runat
="server"
type
="button"
value
="查看"
style
=" 50px; height: 20px;"
class
="ClassBtn"
onclick
="return View();"
/>
<
asp:Button
ID
="btnSearch"
runat
="server"
Text
="查询"
Enabled
="false"
Width
="50px"
Height
="20px"
OnClick
="btnSearch_Click"
/>
<
input
id
="btnAdd"
runat
="server"
type
="button"
value
="添加"
style
=" 50px; height: 20px;"
class
="ClassBtn"
onclick
="return Add();"
/>
<
input
id
="btnEdit"
runat
="server"
type
="button"
value
="修改"
style
=" 50px; height: 20px;"
class
="ClassBtn"
onclick
="return Edit();"
/>
<
asp:Button
ID
="btnDelete"
runat
="server"
Text
="删除"
Width
="50px"
Height
="20px"
OnClick
="btnDelete_Click"
OnClientClick
="javascript:return ( checkSelect() && confirm('警告:删除将无法恢复!\n确认删除吗?') );"
/>
<
asp:Button
ID
="btnPrint"
runat
="server"
Text
="打印"
Width
="50px"
Height
="20px"
OnClick
="btnToExcel_Click"
/>
<
asp:Button
ID
="btnOut"
runat
="server"
Text
="导出"
Width
="50px"
Height
="20px"
OnClick
="btnToExcel_Click"
/>
</
td
>
</
tr
>
</
table
>
<
asp:GridView
ID
="GridView1"
SkinID
="gvClass2"
runat
="server"
Width
="%"
DataKeyNames
="ID"
AutoGenerateColumns
="False"
OnRowDataBound
="GridView1_RowDataBound"
OnDataBound
="GridView1_DataBound"
AllowSorting
="True"
OnSorting
="GridView1_Sorting"
AllowPaging
="True"
PageSize
=""
OnPageIndexChanging
="GridView1_PageIndexChanging"
>
<
PagerTemplate
>
<
table
width
="%"
>
<
tr
>
<
td
width
="%"
align
="left"
>
<
asp:Label
ID
="MessageLabel"
ForeColor
="Blue"
Text
="页码:"
runat
="server"
/>
<
asp:DropDownList
ID
="PageDropDownList"
AutoPostBack
="true"
OnSelectedIndexChanged
="PageDropDownList_SelectedIndexChanged"
runat
="server"
/>
<
asp:LinkButton
CommandName
="Page"
CommandArgument
="First"
ID
="linkBtnFirst"
runat
="server"
>
首页
</
asp:LinkButton
>
<
asp:LinkButton
CommandName
="Page"
CommandArgument
="Prev"
ID
="linkBtnPrev"
runat
="server"
>
上一页
</
asp:LinkButton
>
<
asp:LinkButton
CommandName
="Page"
CommandArgument
="Next"
ID
="linkBtnNext"
runat
="server"
>
下一页
</
asp:LinkButton
>
<
asp:LinkButton
CommandName
="Page"
CommandArgument
="Last"
ID
="linkBtnLast"
runat
="server"
>
尾页
</
asp:LinkButton
>
</
td
>
<
td
width
="%"
align
="right"
>
<
asp:Label
ID
="CurrentPageLabel"
ForeColor
="Blue"
runat
="server"
/>
</
td
>
</
tr
>
</
table
>
</
PagerTemplate
>
<
Columns
>
<
asp:TemplateField
>
<
ItemTemplate
>
<
input
id
="check"
runat
="server"
type
="checkbox"
value
='<%#
Eval("ID") %
>
' />
</
ItemTemplate
>
<
HeaderTemplate
>
<
input
id
="checkAll"
title
="全选"
onclick
="javascript:CheckAll(this);"
runat
="server"
type
="checkbox"
/>
</
HeaderTemplate
>
<
ItemStyle
Width
="5%"
/>
</
asp:TemplateField
>
<
asp:BoundField
DataField
="Name"
HeaderText
="名称"
SortExpression
="Name"
>
<
ItemStyle
Width
="%"
HorizontalAlign
="Left"
/>
</
asp:BoundField
>
<
asp:BoundField
DataField
="Description"
HeaderText
="描述"
SortExpression
="Description"
>
<
ItemStyle
HorizontalAlign
="Left"
/>
</
asp:BoundField
>
</
Columns
>
</
asp:GridView
>
<
asp:Label
ID
="Message"
runat
="server"
ForeColor
="Red"
></
asp:Label
>
</
form
>
</
body
>
</
html
>
<
script
language
="javascript"
>
function
$(s)
{
return
document.getElementById(s);}
function
isNull(_sVal)
{
return
(_sVal
==
""
||
_sVal
==
null
||
_sVal
==
"
#ff0000
"
);}
//
获取地址栏参数
function
GetURL(name)
{
var
URLParams
=
new
Array();
var
aParams
=
document.location.search.substr(
1
).split(
'
&
'
);
for
(i
=
0
; i
<
aParams.length; i
++
)
{
var
aParam
=
aParams[i].split(
'
=
'
);
URLParams[aParam[
0
]]
=
aParam[
1
];
}
//
取得传过来的name参数
return
URLParams[name];
}
var
tgs;
var
tmp_background_val;
function
tog(n,flags)
{
if
(tgs)
{
tgs.style.background
=
tmp_background_val ;
}
n.style.background
=
'
#99ccff
'
;
tmp_background_val
=
flags;
tgs
=
n;
}
function
GetRowIndex(obj)
{
$(
'
<%=HiddenID.ClientID %>
'
).value
=
obj;
}
var
HiddenID;
function
checkSelect()
{
HiddenID
=
$(
'
<%=HiddenID.ClientID %>
'
).value;
if
(isNull(HiddenID))
{
alert(
"
请选择一条记录!
"
);
}
return
!
isNull(HiddenID);
}
function
CheckAll(spanChk)
//
CheckBox全选
{
var
oItem
=
spanChk.children;
var
theBox
=
(spanChk.type
==
"
checkbox
"
)
?
spanChk:spanChk.children.item[
0
];
xState
=
theBox.checked;
elm
=
theBox.form.elements;
for
(i
=
0
;i
<
elm.length;i
++
)
if
(elm[i].type
==
"
checkbox
"
&&
elm[i].id
!=
theBox.id)
{
if
(elm[i].checked
!=
xState)
elm[i].click();
}
}
//
---------------------------------------------------------
//
查看
function
View()
{
if
(checkSelect())
{
var
url
=
"
PM_BaseEdit.aspx?ID=
"
+
HiddenID
+
"
&tableName=
"
+
GetURL(
"
tableName
"
);
winOpen(url);
}
}
//
添加
function
Add()
{
var
url
=
"
PM_BaseAdd.aspx?tableName=
"
+
GetURL(
"
tableName
"
);
winOpen(url);
}
//
编辑
function
Edit()
{
if
(checkSelect())
{
var
url
=
"
PM_BaseEdit.aspx?ID=
"
+
HiddenID
+
"
&tableName=
"
+
GetURL(
"
tableName
"
);
winOpen(url);
}
}
//
弹出打开新页面-------------------------------------------
function
winOpen(url)
{
var
sFeatures
=
'
height=, width=, top=, left=,toolbar=0, menubar=0, scrollbars=auto, resizable=1, location=0, status=0
'
;
window.open(url,
"
PM_Base
"
,sFeatures);
}
function
showDialog(url)
{
var
sFeatures
=
"
dialogHeight:400px;dialogWidth:500px;resizeable:no;help:no;status:no
"
;
var
obj
=
showModalDialog(url,window,sFeatures);
}
</
script
>
PM_Base.aspx.cs
using
System;
using
System.Data;
using
System.Data.OleDb;
using
System.Data.SqlClient;
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;
using
System.Web.Caching;
using
Framework.Components;
public
partial
class
PM_Base : Framework.UI.PageBase
{
Page事件
#region
Page事件
MX.PM.BLL.Progress myBiz
=
new
MX.PM.BLL.Progress();
string
tableName;
protected
void
Page_Load(
object
sender, EventArgs e)
{
tableName
=
base
.GetUrl(
"
tableName
"
);
//
首先要进行权限判断
if
(
!
string
.IsNullOrEmpty(tableName))
{
if
(
!
Page.IsPostBack)
{
if
(
!
Framework.Globals.CurrentPrincipal.HasPermission((
int
)Framework.Helper.ProjectManage.BaseBrowse))
{
Framework.AppException exception
=
new
Framework.AppException(
"
对不起,您无权操作此页面!
"
);
GridView1.Visible
=
false
;
btnView.Disabled
=
true
;
}
if
(
!
Framework.Globals.CurrentPrincipal.HasPermission((
int
)Framework.Helper.ProjectManage.BaseSelect))
{
btnSearch.Enabled
=
false
;
btnPrint.Enabled
=
false
;
btnOut.Enabled
=
false
;
}
if
(
!
Framework.Globals.CurrentPrincipal.HasPermission((
int
)Framework.Helper.ProjectManage.BaseAdd))
{
btnAdd.Disabled
=
true
;
}
if
(
!
Framework.Globals.CurrentPrincipal.HasPermission((
int
)Framework.Helper.ProjectManage.BaseUpdate))
{
btnEdit.Disabled
=
true
;
}
if
(
!
Framework.Globals.CurrentPrincipal.HasPermission((
int
)Framework.Helper.ProjectManage.BaseDelete))
{
btnDelete.Enabled
=
false
;
}
//
在此处放置查询代码
string
strTableName
=
"
PM_Progress
"
;
this
.btnSearch.OnClientClick
=
"
javascript:window.showModalDialog('../Tools/AjaxGeneralSearch/AjaxSeachPage.aspx?table=
"
+
strTableName
+
"
','','dialogWidth:500px; dialogHeight:400px; status:; help:; center:; scroll:; resizable:;');
"
;
}
GetData();
//
重新获取操作后的数据源
if
(
!
Page.IsPostBack)
{
BindGrid();
//
绑定GridView,为删除服务
}
}
}
#endregion
GridView
#region
GridView
属性
#region
属性
/**/
/**/
/**/
///
<summary>
///
获取或设置数据源
///
</summary>
public
DataTable DataSource
{
get
{
if
(ViewState[
"
dataSource
"
]
==
null
)
return
null
;
else
return
(DataTable)ViewState[
"
dataSource
"
];
}
set
{
ViewState[
"
dataSource
"
]
=
value;
}
}
/**/
/**/
/**/
///
<summary>
///
获取或设置排序方向
///
</summary>
public
SortDirection Sort_Direction
{
get
{
if
(ViewState[
"
sortDirection
"
]
==
null
)
return
SortDirection.Ascending;
else
return
(SortDirection)ViewState[
"
sortDirection
"
];
}
set
{
ViewState[
"
sortDirection
"
]
=
value;
}
}
/**/
/**/
/**/
///
<summary>
///
获取或设置当前分页码
///
</summary>
public
int
CurrentPage
{
get
{
if
(ViewState[
"
CurrentPage
"
]
==
null
)
return
;
else
return
(
int
)ViewState[
"
CurrentPage
"
];
}
set
{
ViewState[
"
CurrentPage
"
]
=
value;
}
}
#endregion
数据绑定
#region
数据绑定
/**/
/**/
/**/
///
<summary>
///
获取数据
///
</summary>
protected
void
GetData()
{
this
.DataSource
=
myBiz.GetBase(tableName).Tables[]; ;
}
/**/
/**/
/**/
///
<summary>
///
GridView 数据绑定
///
</summary>
private
void
BindGrid()
{
Message.Text
=
""
;
GridView1.DataSource
=
this
.DataSource;
GridView1.DataBind();
GridView1.PageIndex
=
CurrentPage;
//
设置当前页
}
protected
void
GridView1_RowDataBound(
object
sender, GridViewRowEventArgs e)
{
if
(e.Row.RowType
==
DataControlRowType.DataRow)
{
System.Web.UI.HtmlControls.HtmlInputCheckBox check
=
(System.Web.UI.HtmlControls.HtmlInputCheckBox)e.Row.FindControl(
"
check
"
);
string
id
=
check.Value;
if
(e.Row.RowIndex
%
!=
)
e.Row.Attributes.Add(
"
onclick
"
,
"
GetRowIndex('
"
+
id
+
"
'),tog(this,'#EFF3FB')
"
);
else
e.Row.Attributes.Add(
"
onclick
"
,
"
GetRowIndex('
"
+
id
+
"
'),tog(this,'#ffffff')
"
);
}
}
#endregion
分页绑定
#region
分页绑定
protected
void
PageDropDownList_SelectedIndexChanged(Object sender, EventArgs e)
{
GridViewRow pagerRow
=
GridView1.BottomPagerRow;
DropDownList pageList
=
(DropDownList)pagerRow.Cells[].FindControl(
"
PageDropDownList
"
);
GridView1.PageIndex
=
pageList.SelectedIndex;
this
.CurrentPage
=
pageList.SelectedIndex;
BindGrid();
}
protected
void
GridView1_DataBound(Object sender, EventArgs e)
{
if
(
this
.DataSource.Rows.Count
>
)
{
GridViewRow pagerRow
=
GridView1.BottomPagerRow;
LinkButton linkBtnFirst
=
(LinkButton)pagerRow.Cells[].FindControl(
"
linkBtnFirst
"
);
LinkButton linkBtnPrev
=
(LinkButton)pagerRow.Cells[].FindControl(
"
linkBtnPrev
"
);
LinkButton linkBtnNext
=
(LinkButton)pagerRow.Cells[].FindControl(
"
linkBtnNext
"
);
LinkButton linkBtnLast
=
(LinkButton)pagerRow.Cells[].FindControl(
"
linkBtnLast
"
);
if
(GridView1.PageIndex
==
)
{
linkBtnFirst.Enabled
=
false
;
linkBtnPrev.Enabled
=
false
;
}
else
if
(GridView1.PageIndex
==
GridView1.PageCount
-
)
{
linkBtnLast.Enabled
=
false
;
linkBtnNext.Enabled
=
false
;
}
else
if
(GridView1.PageCount
<=
)
{
linkBtnFirst.Enabled
=
false
;
linkBtnPrev.Enabled
=
false
;
linkBtnNext.Enabled
=
false
;
linkBtnLast.Enabled
=
false
;
}
DropDownList pageList
=
(DropDownList)pagerRow.Cells[].FindControl(
"
PageDropDownList
"
);
Label pageLabel
=
(Label)pagerRow.Cells[].FindControl(
"
CurrentPageLabel
"
);
if
(pageList
!=
null
)
{
for
(
int
i
=
; i
<
GridView1.PageCount; i
++
)
{
int
pageNumber
=
i
+
;
ListItem item
=
new
ListItem(pageNumber.ToString()
+
"
/
"
+
GridView1.PageCount.ToString(), pageNumber.ToString());
if
(i
==
GridView1.PageIndex)
{
item.Selected
=
true
;
}
pageList.Items.Add(item);
}
}
if
(pageLabel
!=
null
)
{
int
currentPage
=
GridView1.PageIndex
+
;
pageLabel.Text
=
"
当前页:
"
+
currentPage.ToString()
+
"
/
"
+
GridView1.PageCount.ToString();
}
}
}
#endregion
分页
#region
分页
protected
void
GridView1_PageIndexChanging(
object
sender, GridViewPageEventArgs e)
{
GridView1.PageIndex
=
e.NewPageIndex;
this
.CurrentPage
=
e.NewPageIndex;
//
保存当前页码
BindGrid();
}
#endregion
排序
#region
排序
/**/
///
/
<summary>
///
排序
///
</summary>
protected
void
GridView1_Sorting(
object
sender, GridViewSortEventArgs e)
{
SortGridView(
ref
GridView1,
this
.DataSource, e);
}
/**/
///
<summary>
///
实现排序
///
</summary>
private
void
SortGridView(
ref
GridView gv,
object
dt, GridViewSortEventArgs e)
{
string
sortDirection
=
""
;
string
sortExpression
=
e.SortExpression;
if
(
this
.Sort_Direction
==
SortDirection.Ascending)
{
this
.Sort_Direction
=
SortDirection.Descending;
sortDirection
=
"
DESC
"
;
}
else
{
this
.Sort_Direction
=
SortDirection.Ascending;
sortDirection
=
"
ASC
"
;
}
DataView Source
=
new
DataView((DataTable)dt);
Source.Sort
=
e.SortExpression
+
"
"
+
sortDirection;
gv.DataSource
=
Source;
gv.DataBind();
}
#endregion
#endregion
按钮事件
#region
按钮事件
查询
#region
查询
protected
void
btnSearch_Click(
object
sender, EventArgs e)
{
GetData();
BindGrid();
}
#endregion
删除
#region
删除
/**/
///
<summary>
///
删除,用循环得到用户选择的CheckBox
///
</summary>
protected
void
btnDelete_Click(
object
sender, EventArgs e)
{
Message.Text
=
""
;
string
sID
=
""
;
for
(
int
i
=
; i
<
GridView1.Rows.Count; i
++
)
{
GridViewRow row
=
GridView1.Rows[i];
System.Web.UI.HtmlControls.HtmlInputCheckBox check
=
(System.Web.UI.HtmlControls.HtmlInputCheckBox)row.FindControl(
"
check
"
);
if
(check.Checked)
{
sID
+=
check.Value
+
"
,
"
;
}
}
if
(sID.Length
>
)
{
//
MX.Sys.DAL.Log log = new MX.Sys.DAL.Log(this.UserInfo.UserName, "删除数据表" + tableName + ",sID=" + sID);
myBiz.DeleteBase(tableName, sID);
//
截取结尾的逗号
Message.Text
=
"
删除成功!
"
;
GetData();
BindGrid();
}
else
{
Message.Text
=
"
删除失败,请勾选要删除项!
"
;
}
}
#endregion
导出 打印
#region
导出 打印
public
override
void
VerifyRenderingInServerForm(Control control)
{
//
为转 excel 出问题而加上的过程(一定加!!)
//
Confirms that an HtmlForm control is rendered for
}
protected
void
btnToExcel_Click(
object
sender, EventArgs e)
{
System.IO.StringWriter stringWrite
=
new
System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite
=
new
HtmlTextWriter(stringWrite);
GridView1.AllowPaging
=
false
;
//
取消分页
BindGrid();
GridView1.RenderControl(htmlWrite);
GridView1.AllowPaging
=
true
;
//
恢复分页
BindGrid();
//
---专用导出页面
PrintInfo info
=
new
PrintInfo();
info.Title
=
"
工程列表
"
;
info.Orientation
=
true
;
info.ShowTime
=
true
;
info.Text
=
stringWrite.ToString();
ToPrint(info);
//
---
}
/**/
///
<summary>
///
打印
///
</summary>
private
void
ToPrint(PrintInfo info)
{
Session[
"
ToExcel
"
]
=
info;
//
***用Session传递参数
string
strURL
=
"
../Tools/WebPrint
"
;
string
sFeatures
=
"
height=, width=, top=, left=,toolbar=no, menubar=no, scrollbars=yes, resizable=no, location=no, status=
"
;
string
js
=
"
window.open('{}','print','{}');
"
;
js
=
string
.Format(js, strURL, sFeatures);
Page.ClientScript.RegisterClientScriptBlock(
this
.GetType(),
"
print
"
, js,
true
);
}
#endregion
#endregion
}
查看全文
相关阅读:
IO(文件)处理
集合 (set) 的增删改查及 copy()方法
字典 (dict) 的增删改查及其他方法
列表(List) 的增删改查及其他方法
细数Python中的数据类型以及他们的方法
CCNA基础 IP地址子网划分
[转] SSH原理与运用(2):远程操作与端口转发
记俩次连续失误操作造成的数据丢失损坏解决
CentOS 下 MySQL DateBasic 抢救
China Mobile 免流原理
原文地址:https://www.cnblogs.com/wf225/p/850218.html
最新文章
常用css样式
安装node-sass提示没有vendor目录的解决办法
取消a标签在移动端点击时的背景颜色
UWP Read write File -StorageFile
UWP Test Webview JS interact, new window open (新窗口打开)
基于懒人模式的金融社交
ORA-12519: TNS:no appropriate service handler found 解决
使用Geolocation校正GDAL不支持的数据
【ShaderToy】基础篇之再谈抗锯齿(antialiasing,AA)
编译GDAL支持MySQL
热门文章
【ShaderToy】开篇
编译GDAL支持ArcObjects
Java在Linux下 不能处理图形的解决办法 Can't connect to X11 window server
【ShaderToy】基础篇之谈谈点、线的绘制
用了一天的时间,linux下expect实现ssh自动登录服务器记,鄙视下网上各种抄来抄去残段子
python内置函数大全
函数 (四) 迭代器和生成器
函数 (三) 装饰器
函数 (二) 名称空间与作用域
函数 (一) 基础
Copyright © 2011-2022 走看看