namespace DasMS.WebUI.Commom
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
/// <summary>
/// DasGrid 的摘要说明。
/// </summary>
public abstract class DasGrid : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.Label CountPage;
protected System.Web.UI.WebControls.Button btnGo;
protected System.Web.UI.WebControls.Label lbPage;
protected System.Web.UI.WebControls.LinkButton btnLast;
protected System.Web.UI.WebControls.LinkButton btnNext;
protected System.Web.UI.WebControls.LinkButton btnPrev;
protected System.Web.UI.WebControls.LinkButton btnFirst;
protected System.Web.UI.WebControls.Panel Panel1;
public System.Web.UI.WebControls.DataGrid MainGrid;
protected System.Web.UI.HtmlControls.HtmlInputText select_index;
protected System.Web.UI.WebControls.TextBox Current;
protected System.Web.UI.WebControls.LinkButton LinkButton1;
protected System.Web.UI.HtmlControls.HtmlInputHidden toback;
protected System.Web.UI.WebControls.LinkButton flash;
protected System.Web.UI.WebControls.Label Label1;
//数据源
protected object iobject_DataSource; //数据唯一标识
protected string iobject_PID;
//状态标志 btndo翻页按纽是否动作!
protected bool btndo=false; //状态标志 currentRow存储选定行!
public static int currentRow=-1;
//状态标志 currentPage存储选定页!
protected static int currentPage=0;
/// <summary>
/// page_Load
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Page_Load(object sender, System.EventArgs e)
{
if (!this.IsPostBack)
{
this.btnFirst.Enabled=false;
this.btnPrev.Enabled=false;
this.DataGrid_Init();
this.DataBind();
this.DasGrid_DataBind();
} //判断查询数据是否大于500条
if(MainGrid.PageCount>500)
{
Label1.Text="提示:查询数据超过500条,请更换查询条件";
Label1.ForeColor=System.Drawing.Color.Red;
Label1.Font.Size=8;
Label1.Font.Name="verdana";
}
} /// <summary>
/// 数据源
/// </summary>
public object DataSource
{
set
{
this.iobject_DataSource = value;
}
} /// <summary>
/// 数据唯一标识
/// </summary>
public string PID
{
set
{
this.iobject_PID = value;
}
}
/// <summary>
/// 获取选定项的ID,DasGrid主键
/// </summary>
public string getSelectID
{
get
{
return this.toback.Value.ToString();
}
} public int setCurrentPage
{
set
{
MainGrid.CurrentPageIndex = value;
}
}
/// <summary>
/// 定义DATAGRID控件的外观!
/// </summary>
protected void DataGrid_Init()
{
MainGrid.SelectedIndex=-1;
// 在此处放置用户代码以初始化页面 MainGrid.PageSize = 4;
//边框颜色
MainGrid.BorderColor = System.Drawing.Color.FromName("#8E8E86");
MainGrid.ItemStyle.BorderColor = System.Drawing.Color.FromName("#BEBFBA");
//标识MainGrid的主键!
MainGrid.DataKeyField="ID";
MainGrid.BorderStyle = System.Web.UI.WebControls.BorderStyle.None;
//personalized GridLines
MainGrid.GridLines = GridLines.Both;
MainGrid.BackColor = System.Drawing.Color.FromName("#aaccff");
//personalized SelectedItemStyle
//设置选择项的样式
//MainGrid.SelectedItemStyle.Font.Name = "Tahoma";
//MainGrid.SelectedItemStyle.Font.Size = 10;
//MainGrid.SelectedItemStyle.Font.Bold = true;
//MainGrid.SelectedItemStyle.ForeColor = System.Drawing.Color.Blue;
MainGrid.SelectedItemStyle.BackColor = System.Drawing.Color.FromName("#DFE3E6");
//personalize AlternatingItemStyle
//交替项的样式
//MainGrid.AlternatingItemStyle.Font.Name = "Tahoma";
//MainGrid.AlternatingItemStyle.Font.Size = 10;
MainGrid.AlternatingItemStyle.ForeColor = System.Drawing.Color.Black;
MainGrid.AlternatingItemStyle.BackColor = System.Drawing.Color.FromName("#EFF3F4");
//personalize ItemStyle
//添充数据的样式
//MainGrid.ItemStyle.Font.Name = "Tahoma";
//MainGrid.ItemStyle.Font.Size =10;
MainGrid.ItemStyle.ForeColor = System.Drawing.Color.Black;
MainGrid.ItemStyle.BackColor = System.Drawing.Color.FromName("#FFFFFF");
MainGrid.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
MainGrid.ItemStyle.VerticalAlign = VerticalAlign.Middle;
MainGrid.ItemStyle.Height = Unit.Pixel(22); //personalize HeaderStyle
//标题标题部分的样式
//MainGrid.HeaderStyle.Font.Name = "Tahoma";
//MainGrid.HeaderStyle.Font.Size = 12;
//MainGrid.HeaderStyle.Font.Bold = true;
//MainGrid.HeaderStyle.ForeColor = System.Drawing.Color.DarkGray;
MainGrid.HeaderStyle.BackColor = System.Drawing.Color.FromName("#D6D7C7");
MainGrid.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
MainGrid.HeaderStyle.VerticalAlign = VerticalAlign.Middle;
MainGrid.HeaderStyle.Height = Unit.Pixel(24); //下边脚的显示样式
MainGrid.PagerStyle.Visible=false;
MainGrid.ShowFooter=false; //personalize PagerStyle
//表分页显示的样式
MainGrid.PagerStyle.Font.Name = "Tahoma";
MainGrid.PagerStyle.Font.Size = 8;
MainGrid.PagerStyle.BackColor = System.Drawing.Color.Gray; }
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
/// <summary>
/// DasGrid 的摘要说明。
/// </summary>
public abstract class DasGrid : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.Label CountPage;
protected System.Web.UI.WebControls.Button btnGo;
protected System.Web.UI.WebControls.Label lbPage;
protected System.Web.UI.WebControls.LinkButton btnLast;
protected System.Web.UI.WebControls.LinkButton btnNext;
protected System.Web.UI.WebControls.LinkButton btnPrev;
protected System.Web.UI.WebControls.LinkButton btnFirst;
protected System.Web.UI.WebControls.Panel Panel1;
public System.Web.UI.WebControls.DataGrid MainGrid;
protected System.Web.UI.HtmlControls.HtmlInputText select_index;
protected System.Web.UI.WebControls.TextBox Current;
protected System.Web.UI.WebControls.LinkButton LinkButton1;
protected System.Web.UI.HtmlControls.HtmlInputHidden toback;
protected System.Web.UI.WebControls.LinkButton flash;
protected System.Web.UI.WebControls.Label Label1;
//数据源
protected object iobject_DataSource; //数据唯一标识
protected string iobject_PID;
//状态标志 btndo翻页按纽是否动作!
protected bool btndo=false; //状态标志 currentRow存储选定行!
public static int currentRow=-1;
//状态标志 currentPage存储选定页!
protected static int currentPage=0;
/// <summary>
/// page_Load
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Page_Load(object sender, System.EventArgs e)
{
if (!this.IsPostBack)
{
this.btnFirst.Enabled=false;
this.btnPrev.Enabled=false;
this.DataGrid_Init();
this.DataBind();
this.DasGrid_DataBind();
} //判断查询数据是否大于500条
if(MainGrid.PageCount>500)
{
Label1.Text="提示:查询数据超过500条,请更换查询条件";
Label1.ForeColor=System.Drawing.Color.Red;
Label1.Font.Size=8;
Label1.Font.Name="verdana";
}
} /// <summary>
/// 数据源
/// </summary>
public object DataSource
{
set
{
this.iobject_DataSource = value;
}
} /// <summary>
/// 数据唯一标识
/// </summary>
public string PID
{
set
{
this.iobject_PID = value;
}
}
/// <summary>
/// 获取选定项的ID,DasGrid主键
/// </summary>
public string getSelectID
{
get
{
return this.toback.Value.ToString();
}
} public int setCurrentPage
{
set
{
MainGrid.CurrentPageIndex = value;
}
}
/// <summary>
/// 定义DATAGRID控件的外观!
/// </summary>
protected void DataGrid_Init()
{
MainGrid.SelectedIndex=-1;
// 在此处放置用户代码以初始化页面 MainGrid.PageSize = 4;
//边框颜色
MainGrid.BorderColor = System.Drawing.Color.FromName("#8E8E86");
MainGrid.ItemStyle.BorderColor = System.Drawing.Color.FromName("#BEBFBA");
//标识MainGrid的主键!
MainGrid.DataKeyField="ID";
MainGrid.BorderStyle = System.Web.UI.WebControls.BorderStyle.None;
//personalized GridLines
MainGrid.GridLines = GridLines.Both;
MainGrid.BackColor = System.Drawing.Color.FromName("#aaccff");
//personalized SelectedItemStyle
//设置选择项的样式
//MainGrid.SelectedItemStyle.Font.Name = "Tahoma";
//MainGrid.SelectedItemStyle.Font.Size = 10;
//MainGrid.SelectedItemStyle.Font.Bold = true;
//MainGrid.SelectedItemStyle.ForeColor = System.Drawing.Color.Blue;
MainGrid.SelectedItemStyle.BackColor = System.Drawing.Color.FromName("#DFE3E6");
//personalize AlternatingItemStyle
//交替项的样式
//MainGrid.AlternatingItemStyle.Font.Name = "Tahoma";
//MainGrid.AlternatingItemStyle.Font.Size = 10;
MainGrid.AlternatingItemStyle.ForeColor = System.Drawing.Color.Black;
MainGrid.AlternatingItemStyle.BackColor = System.Drawing.Color.FromName("#EFF3F4");
//personalize ItemStyle
//添充数据的样式
//MainGrid.ItemStyle.Font.Name = "Tahoma";
//MainGrid.ItemStyle.Font.Size =10;
MainGrid.ItemStyle.ForeColor = System.Drawing.Color.Black;
MainGrid.ItemStyle.BackColor = System.Drawing.Color.FromName("#FFFFFF");
MainGrid.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
MainGrid.ItemStyle.VerticalAlign = VerticalAlign.Middle;
MainGrid.ItemStyle.Height = Unit.Pixel(22); //personalize HeaderStyle
//标题标题部分的样式
//MainGrid.HeaderStyle.Font.Name = "Tahoma";
//MainGrid.HeaderStyle.Font.Size = 12;
//MainGrid.HeaderStyle.Font.Bold = true;
//MainGrid.HeaderStyle.ForeColor = System.Drawing.Color.DarkGray;
MainGrid.HeaderStyle.BackColor = System.Drawing.Color.FromName("#D6D7C7");
MainGrid.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
MainGrid.HeaderStyle.VerticalAlign = VerticalAlign.Middle;
MainGrid.HeaderStyle.Height = Unit.Pixel(24); //下边脚的显示样式
MainGrid.PagerStyle.Visible=false;
MainGrid.ShowFooter=false; //personalize PagerStyle
//表分页显示的样式
MainGrid.PagerStyle.Font.Name = "Tahoma";
MainGrid.PagerStyle.Font.Size = 8;
MainGrid.PagerStyle.BackColor = System.Drawing.Color.Gray; }
解决方案 »
- 必须声明标量变量 "@UserID"。请问怎样解决?
- 在这问一次!貌似高深的问题!求解
- 关于datagrid的列表头数目变动的问题
- 如何在ASP。net里用Excel中的数据填充DataSet
- 简单问题送高分!!!
- lpk.dll无法清除怎么办!
- ASP.ENT 页面回发,求大神指导
- 把实体类序列化为JSON格式的字符串。本地测试正常,传到服务器报错。
- 在线编辑器ckeditor的取值。
- 如何在没安装IIS的个人电脑上利用公司的大型服务器发布网站
- 如何让模版列(固定大小的)中文本框随着绑定字段值的长短自动换行?在线等待。
- 你好:我想知道如何在表的上方由TextBox或DropDownList传入参数信息,然后点搜索,在DataGrid中显示搜索结果,在线求救!!!!!!
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// 设计器支持所需的方法 - 不要使用
/// 代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.LinkButton1.Click += new System.EventHandler(this.LinkButton1_Click);
this.btnFirst.Click += new System.EventHandler(this.btnFirst_Click);
this.btnPrev.Click += new System.EventHandler(this.btnPrev_Click);
this.btnNext.Click += new System.EventHandler(this.btnNext_Click);
this.btnLast.Click += new System.EventHandler(this.btnLast_Click);
this.btnGo.Click += new System.EventHandler(this.btnGo_Click);
this.flash.Click += new System.EventHandler(this.flash_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion /// <summary>
/// 绑定各行Item值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Item_Created(Object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemIndex >= 0)
{
e.Item.Cells[0].Text = (MainGrid.PageSize * MainGrid.CurrentPageIndex + e.Item.ItemIndex + 1).ToString();
}
} /// <summary>
/// 首页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnFirst_Click(object sender, System.EventArgs e)
{
PagerButtonClick(btnFirst.CommandArgument.ToString());
} /// <summary>
/// 下一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnNext_Click(object sender, System.EventArgs e)
{
PagerButtonClick(btnNext.CommandArgument.ToString());
} /// <summary>
/// 末页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnLast_Click(object sender, System.EventArgs e)
{
PagerButtonClick(btnLast.CommandArgument.ToString());
}
/// <summary>
/// 前一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnPrev_Click(object sender, System.EventArgs e)
{
PagerButtonClick(btnPrev.CommandArgument.ToString());
}
/// <summary>
/// 定位页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGo_Click(object sender, System.EventArgs e)
{
PagerButtonClick(btnGo.CommandArgument.ToString());
}
/// <summary>
/// 刷新页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void flash_Click(object sender, System.EventArgs e)
{
this.DataBind();
this.DasGrid_DataBind();
}
/// <summary>
/// 处理翻页的方法!
/// </summary>
/// <param name="arg"></param>
private void PagerButtonClick(string arg)
{
btndo=true;
switch(arg)
{
//下一页
case("next"):
if(MainGrid.CurrentPageIndex<(MainGrid.PageCount-1))
{
MainGrid.CurrentPageIndex++;
Current.Text=Convert.ToString(MainGrid.CurrentPageIndex+1);
if(MainGrid.CurrentPageIndex>=(MainGrid.PageCount-1))
{
btnNext.Enabled=false;
btnLast.Enabled=false;
}
btnPrev.Enabled=true;
btnFirst.Enabled=true;
}
break;
//前一页
case("prev"):
if(MainGrid.CurrentPageIndex>0)
{
MainGrid.CurrentPageIndex--;
Current.Text=Convert.ToString(MainGrid.CurrentPageIndex+1);
if(MainGrid.CurrentPageIndex<=0)
{
btnPrev.Enabled=false;
btnFirst.Enabled=false;
}
btnNext.Enabled=true;
btnLast.Enabled=true;
}
break;
//定位页
case("appoint"):
if(Current.Text.Length<=4)
{
if(Convert.ToInt32(Current.Text)>0 && Convert.ToInt32(Current.Text)<=MainGrid.PageCount)
{
MainGrid.CurrentPageIndex=System.Convert.ToInt32(Current.Text)-1;
btnFirst.Enabled=true;
btnPrev.Enabled=true;
btnNext.Enabled=true;
btnLast.Enabled=true;
if(MainGrid.CurrentPageIndex==0)
{
btnPrev.Enabled=false;
btnFirst.Enabled=false;
}
if(MainGrid.CurrentPageIndex==(MainGrid.PageCount-1))
{
btnNext.Enabled=false;
btnLast.Enabled=false;
} }
}
else
{
System.Console.Write("你的页面数选的太大了!");
}
break;
//末页
case("last"):
MainGrid.CurrentPageIndex=(MainGrid.PageCount-1);
Current.Text=Convert.ToString(MainGrid.CurrentPageIndex+1);
btnNext.Enabled=false;
btnLast.Enabled=false;
btnFirst.Enabled=true;
btnPrev.Enabled=true;
break;
//首页
default:
MainGrid.CurrentPageIndex=0;
Current.Text=Convert.ToString(MainGrid.CurrentPageIndex+1);
btnFirst.Enabled=false;
btnPrev.Enabled=false;
btnNext.Enabled=true;
btnLast.Enabled=true;
break;
}
//用于翻动页面时,存储定位的数据所在的页的行!
// if(currentPage!=MainGrid.CurrentPageIndex)
// {
// MainGrid.SelectedIndex=-1;
// }
// else
// {
// MainGrid.SelectedIndex=currentRow;
// }
this.DataBind();
this.DasGrid_DataBind();
}
/// 数据源绑定
/// </summary>
public void DasGrid_DataBind()
{
if( this.iobject_DataSource != null)
{
BoundColumn col = new BoundColumn();
col.HeaderText = "序号";
MainGrid.Columns.Add(col); DataTable ldt_Data = new DataTable();
ldt_Data = (DataTable)iobject_DataSource;
foreach(DataColumn datacol in ldt_Data.Columns)
{
col = new BoundColumn();
col.HeaderText=datacol.ColumnName;
col.DataField=datacol.ColumnName;
MainGrid.Columns.Add(col);
}
MainGrid.DataSource=this.iobject_DataSource;
MainGrid.DataBind();
MainGrid.Columns[1].Visible = false;
if(this.iobject_PID != null && btndo == false)
{
MainGrid.SelectedIndex=0; while (this.iobject_PID != MainGrid.DataKeys[MainGrid.SelectedIndex].ToString()
&& MainGrid.CurrentPageIndex <= (MainGrid.PageCount))
{
int i=0;
while(this.iobject_PID != MainGrid.DataKeys[MainGrid.SelectedIndex].ToString() && i<(MainGrid.PageSize-1)) //i<3
{
i++;
MainGrid.SelectedIndex++;
} if(this.iobject_PID != MainGrid.DataKeys[MainGrid.SelectedIndex].ToString())
{
MainGrid.CurrentPageIndex++;
MainGrid.DataBind();
MainGrid.SelectedIndex=0;
}
} if(this.iobject_PID != MainGrid.DataKeys[MainGrid.SelectedIndex].ToString())
{
MainGrid.CurrentPageIndex=0;
}
else
{
currentRow=MainGrid.SelectedIndex;
currentPage=MainGrid.CurrentPageIndex;
MainGrid.SelectedIndex = -1;
MainGrid.DataBind();
}
}
}
Anchor(MainGrid.CurrentPageIndex);
showStats();
btndo=false;
}
/// <summary>
/// 显示当前所在的页面和总页数!
/// </summary>
void showStats()
{
CountPage.Text="页次:" + (MainGrid.CurrentPageIndex+1) +"/"+ MainGrid.PageCount;
}
/// <summary>
/// 获取鼠标事件,同时找到鼠标所定位的行!
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void SelectRow(object sender,DataGridItemEventArgs e)
{
if(( e.Item.ItemType == ListItemType.Item) ||( e.Item.ItemType == ListItemType.AlternatingItem))
{
//e.Item.Attributes.Add("onmousedown","this.style.backgroundColor='Silver'");
//e.Item.Attributes.Add("onmouseup","this.style.backgroundColor='#ffffff'");
e.Item.Attributes.Add("ID",""+MainGrid.DataKeys[e.Item.ItemIndex]+"");
e.Item.Attributes["onclick"]="Click('"+MainGrid.DataKeys[e.Item.ItemIndex]+"');";
e.Item.Attributes.Add("onmousedown","DataGridMouseDown('"+MainGrid.DataKeys[e.Item.ItemIndex]+"')");
e.Item.Attributes.Add("onkeydown","element_onkeydown()");
e.Item.Attributes.Add("onkeyup","element_onkeyup()");
e.Item.Attributes["ondblclick"]="dblClick('"+MainGrid.DataKeys[e.Item.ItemIndex]+"')"; }
}
/// <summary>
/// 找到鼠标所定位行的ID;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LinkButton1_Click(object sender, System.EventArgs e)
{
iobject_PID=this.toback.Value.ToString();
DataBind();
DasGrid_DataBind();
}
/// <summary>
/// 定位后各个按纽的状态
/// </summary>
/// <param name="pageindex"></param>
private void Anchor(int pageindex)
{
if(pageindex == 0)
{
this.btnFirst.Enabled = false;
this.btnPrev.Enabled =false;
if (MainGrid.PageCount == 1)
{
this.btnLast.Enabled = false;
this.btnNext.Enabled = false;
}
else
{
this.btnLast.Enabled = true;
this.btnNext.Enabled = true;
}
}
else if(pageindex == MainGrid.PageCount-1)
{
if (pageindex == 0)
{
this.btnFirst.Enabled = false;
this.btnPrev.Enabled = false;
}
else
{
this.btnFirst.Enabled = true;
this.btnPrev.Enabled = true;
}
this.btnLast.Enabled = false;
this.btnNext.Enabled = false;
}
else
{
this.btnFirst.Enabled = true;
this.btnPrev.Enabled = true;
this.btnLast.Enabled = true;
this.btnNext.Enabled = true;
}
this.Current.Text = Convert.ToString(pageindex+1);
}
}
}
{
.....
}
catch
{ }在catch里判断,如果异常是那个INDEX错误就CurrentPageIndex=CurrentPageIndex-1试试吧