1.判断权限部分的代码
int i=convert.toint32((string)session["user_flag"]);
switch(i)
{//根据权限执行不同的sql语句
case 0://管理员
e.item.cells[9].visible=false;
break;
case 1://厅领导
e.item.cells[6].visible=false;
e.item.cells[7].visible=false;
e.item.cells[8].visible=false;
e.item.cells[9].visible=false;
break;
case 2://省律师协会
e.item.cells[8].visible=false;
break;
case 3://省律师处
e.item.cells[8].visible=false;
break;
case 4://市律师协会
e.item.cells[8].visible=false;
break;
case 5://市律师处
e.item.cells[8].visible=false;
break;
case 6://省直律师事务所
e.item.cells[8].visible=false;
break;
}
2.根据linkbutton来动态显示或者隐藏某些控件
private void linkbutton2_click(object sender, system.eventargs e)
{
linkbutton lb=(linkbutton)sender;
panel1.visible=lb.commandname=="yes";
lb.commandname=(lb.commandname=="no")?"yes":"no";
}
3.设置标题列的背景颜色
private void dg1_itemcreated(object sender, system.web.ui.webcontrols.datagriditemeventargs e)
{
if(e.item.itemtype==listitemtype.header)
{//设置标题列的背景颜色
for(int j=0;j<e.item.cells.count;j++)
{
//e.item.cells[j].backcolor=color.fromname("#ffff66");
e.item.cells[j].cssclass="title";
}
}
}
4.本程序所用样式表
body
{
font-size:12px;
}
table{
border-collapse:collapse;
border: 1px solid #28ace2;
word-wrap:break-word;
}td {
border: 1px solid #28ace2;
background-color: #e7f8ff;
font-size: 12px;
}
a {
color: #003399;
text-decoration: none;
}
a:hover {
color: #003366;
}
.title
{
background-color:#ffff66;
}
5.多条件高级查询
void bindgrid(string word1,string word2)
{
sqlconnection myconn=oa.cls.globalstate.getconnection();
string sql=@"select * from [suo] where ([id] is not null)";//因为id是主键,所以不可能为null,这是个小技巧
if(convert.toint32((string)session["user_flag"])==0)
{//如果是管理员就只能看到已经提交的信息
sql=@"select * from [suo] where [is]<>0";
}
if(word1!=""){sql+=" and ([name] like %"+word1+"%)";}//加一个判断条件,注意语句开头有一个空格
if(word2!=""){sql+=" and ([zhiye] like %"+word2+"%)";}//加一个判断条件,注意语句开头有一个空格
sql+=" order by id desc";
response.write(sql);
sqldataadapter da=new sqldataadapter(sql,myconn);
dataset ds=new dataset();
da.fill(ds,"suo");
dg1.datasource=ds.tables[0].defaultview;
dg1.databind();
}
6.动态改变数据绑定列在编辑时自动生成的textbox
private void dg1_itemcreated(object sender, system.web.ui.webcontrols.datagriditemeventargs e)
{
if (e.item.itemtype == listitemtype.edititem)
{//在编辑是让第3个数据帮定列自动生成的textbox成为多行的
textbox tb=e.item.cells[2].controls[0] as textbox;
if(tb!=null)
{
tb.textmode=textboxmode.multiline;
}
}
}
7.给删除添加确认
private void dg1_itemdatabound(object sender, system.web.ui.webcontrols.datagriditemeventargs e)
{
if(e.item.itemtype==listitemtype.item||e.item.itemtype==listitemtype.alternatingitem)
{
//给删除加上确认
linkbutton lbtdelete = e.item.cells[4].controls[0] as linkbutton;
if (lbtdelete!=null)
{
lbtdelete.attributes.add("onclick","var d = 您确定要删除吗?;return window.confirm(d);");
}
}
}
8.datagrid更新数据
private void dg1_updatecommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)
{//更新记录
string sql=@"update [suo_jl]set jibie=@jibie,neirong=@neirong where id=@id";
sqlparameter[]parameters={
new sqlparameter("@id",sqldbtype.int,4),
new sqlparameter("@jibie",sqldbtype.varchar,200),
new sqlparameter("@neirong",sqldbtype.text,16),
};
parameters[0].value=(int)dg1.datakeys[e.item.itemindex];//获取正在编辑的列的主键id
parameters[1].value=((dropdownlist)e.item.findcontrol("dropdownlist1")).selectedvalue;//此列为模板列,所以要用findcontrol方法
parameters[2].value=((textbox)e.item.cells[2].controls[0]).text;//此列为数据绑定列,直接用cell集合就能访问
oa.cls.globalstate.runsql(sql,parameters);
dg1.edititemindex=-1;//设置编辑索引为-1,要不老显示在编辑模式
bindgrid();//绑定表格
}
9.datagrid删除数据
private void dg1_deletecommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)
{
string sql=@"delete from [suo_jl] where id=@id";
sqlparameter[]parameters={new sqlparameter("@id",sqldbtype.int,4)};
parameters[0].value=(int)dg1.datakeys[e.item.itemindex];//获取datagrid的datakeys集合,需要在页面上指定
oa.cls.globalstate.runsql(sql,parameters);
bindgrid();//最后还要绑定数据
}
10.datagrid编辑和取消编辑数据
private void dg1_cancelcommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)
{
dg1.edititemindex=-1;
bindgrid();
}
private void dg1_editcommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)
{
dg1.edititemindex=(int)e.item.itemindex;
bindgrid();
}
11.执行存储过程和sql语句
public static int runsp(string sql,sqlparameter[] parameters)
{
//执行存储过程
sqlconnection conn=getconnection();
sqlcommand cmd=new sqlcommand(sql,conn);
cmd.commandtype = commandtype.storedprocedure;
for(int i=0;i<parameters.length;i++)
{
cmd.parameters.add(parameters[i]);
}
try
{
conn.open();
return cmd.executenonquery();
}
catch(exception exp){throw exp;}
finally{conn.close();}
}
public static int runsql(string sql,sqlparameter[] parameters)
{
//执行sql语句
sqlconnection conn=getconnection();
sqlcommand cmd=new sqlcommand(sql,conn);
foreach(sqlparameter pr in parameters)
{
cmd.parameters.add(pr);
}
try
{
conn.open();
return cmd.executenonquery();
}
catch(exception exp){throw exp;}
finally{conn.close();}
}
12.获取数据库连接实例
public static sqlconnection getconnection()
{
/*
* 获取数据库连接实例
*/
sqlconnection myconn;
myconn=new sqlconnection((string)configurationsettings.appsettings["connstring"]);
return myconn;
}
13.生成随机数
public static string makerand(string s, int len)
{
//返回一个随机数,从s里选,然后返回len长度的随机数
if (s==null || s=="") throw new myexception("string:s not null");
string tmpstr = "";
int irandnum;
random rnd = new random();
for(int i=0;i<len;i++)
{
irandnum = rnd.next(s.length);
tmpstr += s[irandnum];
}
return tmpstr;
}
public static string makerand(int len)
{
//上一个函数的重载版本
string str;
str="abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz";
return makerand(str,len);
}
14.我自己写的上传函数
public static string upfile(system.web.ui.page p,system.web.ui.htmlcontrols.htmlinputfile file1){
//上传文件
if (file1.postedfile != null)
{
try
{
string spath=p.server.mappath(p.request.applicationpath)+configurationsettings.appsettings["uppath"];
string fpath=oa.cls.globalstate.makerand(10)+system.io.path.getfilename(file1.postedfile.filename);
spath+=fpath;
file1.postedfile.saveas(spath);
return fpath;
}
catch (exception exc)
{
throw exc;
}
}
return "";
}
