GridView后台绑定数据列表方法.docx
- 文档编号:7072111
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:8
- 大小:16.09KB
GridView后台绑定数据列表方法.docx
《GridView后台绑定数据列表方法.docx》由会员分享,可在线阅读,更多相关《GridView后台绑定数据列表方法.docx(8页珍藏版)》请在冰豆网上搜索。
GridView后台绑定数据列表方法
GridView后台绑定数据列表方法
GridView后台绑定数据列表方法在很多时候数据绑定都是知道了数据表中的表字段来绑定GridView控件的,那时候我就有个想法希望通过表明来查询数据库中的字段来动态的绑定GirdView控件数据并提供了相关的操作列,在网上找了一些资料字按照自己的想法改进写了一个后台绑定GridView控件得得模板。
其中最主要的好处是只需要知道数据库中的列名就可以了,表头可以在一个其他文件中来和数据列表绑定/*
*2014-02-27
*GridView数据列绑定帮助文档
*用于动态添查询数据绑定到数据表中
*提供各种类型的绑定
*
***/
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
//
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;namespaceCommonLib
{
///
///GridView数据列绑定中兴
///
publicclassGridViewTemplate:
ITemplate
{
publicdelegatevoidEventHandler(objectsender,EventArgse);
publiceventEventHandlereh;
privateDataControlRowTypetemplateType;
privatestringcolumnName;
privatestringcontrolID;
privateXMLTableInfoxmTable=null;
privateBindTypebind=BindType.label;
publicGridViewTemplate()
{}
///
///构造函数
///
///绑定列类型
///绑定列名称或者需要绑定的数据库字段
///绑定字段类型控件
publicGridViewTemplate(DataControlRowTypetype,stringcolname,BindTypebin,XMLTableInfotab)
{
templateType=type;
columnName=colname;
bind=bin;
this.xmTable=tab;
}
///
///绑定事件
///
///
///
///
publicGridViewTemplate(DataControlRowTypetype,stringcontrolID,stringcolname)
{
templateType=type;
this.controlID=controlID;
columnName=colname;
}
publicvoidInstantiateIn(System.Web.UI.Controlcontainer)
{
switch(templateType)
{
caseDataControlRowType.Header:
//标题绑定
if(bind==BindType.label)
{
Literallc=newLiteral();
lc.Text=columnName;
container.Controls.Add(lc);
}
if(bind==BindType.checkbok)
{
Literallc=newLiteral();
//可以按照自己想要处理方法来写
lc.Text="全选";
container.Controls.Add(lc);
}
if(bind==BindType.editor)
{
Literallc=newLiteral();
lc.Text="编辑";
container.Controls.Add(lc);
}
if(bind==BindType.delete)
{
Literallc=newLiteral();
lc.Text="";//"删除";
container.Controls.Add(lc);
}break;
caseDataControlRowType.DataRow:
//普通列绑定
if(bind==BindType.label)
{
Labeltb=newLabel();
tb.DataBinding+=tb_DataBinding;
container.Controls.Add(tb);
}
if(bind==BindType.checkbok)
{
Literallic=newLiteral();
lic.DataBinding+=lic_DataBinding;
container.Controls.Add(lic);
}
if(bind==BindType.editor)
{
Literallec=newLiteral();
lec.DataBinding+=lec_DataBinding;
container.Controls.Add(lec);
}
if(bind==BindType.editor)
{
Literaldel=newLiteral();
del.DataBinding+=del_DataBinding;
container.Controls.Add(del);
}break;
default:
break;
}
}voiddel_DataBinding(objectsender,EventArgse)
{Literaltb=(Literal)sender;GridViewRowrow=(GridViewRow)tb.NamingContainer;
tb.ID=columnName;
//可以按照自己想要处理方法来写
tb.Text=""+xmTable.CName+"&eName="+xmTable.EName+"&id="+DataBinder.Eval(row.DataItem,columnName).ToString()+"'>删除";}voidlec_DataBinding(objectsender,EventArgse)
{
Literaltb=(Literal)sender;GridViewRowrow=(GridViewRow)tb.NamingContainer;
tb.ID=columnName;
//可以按照自己想要处理方法来写
tb.Text=""+xmTable.CName+"&eName="+xmTable.EName+"&id="+DataBinder.Eval(row.DataItem,columnName).ToString()+"'>编辑";
}voidlic_DataBinding(objectsender,EventArgse)
{Literalbtn=(Literal)sender;GridViewRowrow=(GridViewRow)btn.NamingContainer;
btn.ID=columnName;
//可以按照自己想要处理方法来写此处绑定一个复选框类名为CheckBox
btn.Text=""+DataBinder.Eval(row.DataItem,columnName).ToString()+"'/>";}
///
///2014-02-27
///张国强
///绑定字段数据列事件
///
///
///
voidtb_DataBinding(objectsender,EventArgse)
{
Labeltb=(Label)sender;try
{
GridViewRowrow=(GridViewRow)tb.NamingContainer;
tb.ID=columnName;
tb.Text=DataBinder.Eval(row.DataItem,columnName).ToString();
}
catch(Exception)
{
}
}}///
///模板类型枚举
///
publicenumBindType
{
label,checkbok,editor,delete
}}调用方法例字///
///绑定数据到GridView控件
///
///GridViews控件
///英文名称
///中文名称
///需要查询的数据字符串
publicvoidLoadInfo(GridViewNewGrid,stringeName,stringcName,stringsqlOrTop)
{
NewGrid.Columns.Clear();
XMLTableInfotb=newXMLTableInfo();
tb.CName=cName;
tb.EName=eName;
XMLBasexBase=newXMLBase();
xBase.LoadDome();
stringtableInfo=xBase.Check(eName,cName);
if(tableInfo=="")
{
return;
}
//1,拆分数据
string[]Ename=tableInfo.Split('|')[0].Split(',');
string[]Cname=tableInfo.Split('|')[1].Split('[');
xBase.LoadDome();
stringid=xBase.GetIdentity(eName,cName);
//循环数表中的列名
for(inti=0;i)
{
TemplateFieldtemp=newTemplateField();
temp.ShowHeader=true;
if(i==0)
{
temp.HeaderTemplate=newGridViewTemplate(DataControlRowType.Header,Cname[i],BindType.checkbok,tb);
temp.ItemTemplate=newGridViewTemplate(DataControlRowType.DataRow,id,BindType.checkbok,tb);
}
else
{
temp.HeaderTemplate=newGridViewTemplate(DataControlRowType.Header,Cname[i],BindType.label,tb);
temp.ItemTemplate=newGridViewTemplate(DataControlRowType.DataRow,Ename[i],BindType.label,tb);
}NewGrid.Columns.Add(temp);
}
//添加编辑列
TemplateFieldtempEditor=newTemplateField();
tempEditor.HeaderTemplate=newGridViewTemplate(DataControlRowType.Header,"操作",BindType.editor,tb);
tempEditor.ItemTemplate=newGridViewTemplate(DataControlRowType.DataRow,id,BindType.editor,tb);
NewGrid.Columns.Add(tempEditor);TemplateFieldtempDelete=newTemplateField();
tempDelete.HeaderTemplate=newGridViewTemplate(DataControlRowType.Header,"删除",BindType.delete,tb);
tempDelete.ItemTemplate=newGridViewTemplate(DataControlRowType.DataRow,id,BindType.delete,tb);
NewGrid.Columns.Add(tempDelete);stringsql="";
if(sqlOrTop.Length11)
{
sql="selecttop"+sqlOrTop+"*from"+eName+"orderby"+id+"DESC";
NewGrid.DataSource=ExcelHelper.GetDataSet(sql);
}
else
{
NewGrid.DataSource=ExcelHelper.GetDataSet(sqlOrTop);
}
NewGrid.AutoGenerateColumns=false;
NewGrid.DataBind();}ViewCode这个例子值提供了一种思路,需要有其他功能的网友可以修改代码为自己想要的表头内容形式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GridView 后台 绑定 数据 列表 方法