GridView控件的灵活应用

来源 :中国科教创新导刊 | 被引量 : 0次 | 上传用户:bjbs222
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文通过一个实例,对.net编程中常用的GirdView控件的灵活应用做一详细的说明,为一般书籍上所未介绍的方法,尤其值得从事.net开发的人员学习。
  关键词:GridView 数据绑定方法 存储过程
  中图分类号:G718.1 文献标识码:A 文章编号:1673-9795(2011)02(b)-0175-02
  
  GridView是在.net中功能非常强大的一种控件,关于它的一般应用,各种书籍和网络上介绍得都有很详细,今年因为要给单位开发一套关于教师评价的软件,为了实现一个功能,发现用这个控件是最适合的,这里就通过对这个功能的实现过程,来介绍我对这个软件的应用。
  首先来说一下要实现的功能,根据当前操作人员所在的系部,从数据表pj_content中读取本系的评价标准,其中pj_content表中包括的与该操作有关的字段为:pjnr(评价项目),pjlb(所属分类),fen(满分值),读取数据是通过一个名为pj_ReadXnpjnr的存储过程实现。
  其界面如下,左侧是本系部待评价教师的名单列表,右侧是评价项目,由于不同的系部评价项目是不相同的,所以必需根据当前登陆人员所在的系部来读取适用于该系部的评价项目。因此,这些项目是动态变化的,用Gridview控件来实现对项目的显示,并在控件中放入不同的评价等级选项,供评价用户选对不同的项目给出不同的评定等级,然后针对不同的评定等级,结合该项目的满分值,系统自动计算出项目所给的分值,点击确定后,将每项的评价结果填入系统中(通过另一存储过程Pj_SavePjResult来完成)。
  其界面如图1所示。
  首先进行界面的设计,为减少赘述,这里仅实现其主要功能,对于界面的美工不涉及。
  (1)在“解决方案资源管理器”中,选择“添加新项”,语言为“Visual C#”,确认“将代码放在单独的文件中”;
  (2)向页面中添加两个SqlDatasource控件,分别用默认名:SqlDataSource1和SqlDataSource2,其中Sqldatasource1用于从数据表pj_teacher中读取属于本系的教师名单;SqlDataSource2用于读取登陆人所在系部的评价项目。单击SqlDataSource1,设置数据源为“指定来自表或视图的列”,名称为“pj_Teacher”,选取列为Teacherid和Tname;
  (3)添加listbox控件,修改其ID值为:Teacherid,设置数据源为上面建好的SqlDataSource1,显示字段为Tname,值字段为Teacherid;
  (4)配置SqlDataSource2,在“希望如何从数据库中检索数据?”中,选择“指定自定义SQL语句或存储过程”,点击“下一步”,选择存储过程为Pj_ReadxnPjnr,点击“下一步”,出现“定义参数”对话框,这里是指定xibie参数,通过Session变量获取。
  (5)添加GridView,设置数据源为SqlDataSource2,选择“编辑列”,点击“刷新架构”,由于刷新时要通过存储过程来读取数据,因此要输入一个xibie的输入参数,在值一项中输入一个系部名称,这里输入“基础部”,点击确定后,出现“无法检索架构,对象名‘#t’无效”的提示。
  打开该存储过程,可以看到,该存储过程并没有问题,出现错误的原因是因为在这种调试状态下系统无法正确检索存储过程的复杂架构,我们把这个存储过程先修改一下,直接读出需要的数据,全部设置好后再记得修改回来:
  CREATE PROCEDURE dbo.Pj_ReadxnPjnr
  @xibie nvarchar(30)
  as
  set nocount on
  begin
  select pjtype,pjnr,id,fen from Pj_Content
  set @rows=@@rowcount
  return @rows
  end
  GO
  刷新通过,并在可用字段中的BoundField下自动产生了四个字段,分别是pjtype,pjnr,id,fen。
  这里我们不需要引用id字段,因此选择BoundField项下除id字段外的其余三个使之出现在选定字段中,由于我们要添加一列,用于放置“评价结果”。为此,点击TemplateField,添加一个模板字段备用。
  设置各字段项目的HeaderText值,注意对应关系(pjtype:评价类别,pjnr:评价项目,TemplateField:评价结果,fen:满分),取消“自动生成字段”选项,以免产生无用的数据列。
  点击每个项目,选“将此字段转换为TemplateField”。
  选编辑模板中的“评价结果”项,该项目对应于“评价结果”列,用于放置几个用于选择评价结果的单选按钮。
  为了放置单选按钮在其中,删除其中ItemTemplate中的[Label]标签,拖动一个Ridiobuttonlist控件进入该项目的ItemTemplate模板中,编辑Ridiobuttonlist的项目,各项目的文本与其值的对应关系为:优秀—5,良好—4,较好—3,一般—2,较差—1,特差—0;
  拖动GridView 的控制柄,调整其宽度足够宽,以免文字出现竖排现象;
  在Griview控件下方拖入一ImageButton控件,设置好其ImageUrl,双击,在其代码段中填加如下代码。该段代码解释如下:
  (1)string strTeacherid=Teacherid.SelectedValue;
  (2)string strTeacherinfo=Teacherid.SelectedItem.Text;
  (3)ConnectionStringSettings con=ConfigurationManager.ConnectionStrings["PjConnectionString"];
  (4)string strConnection=con.ConnectionString;
  (5)SqlConnection myCon=new SqlConnection();
  (6)myCon.ConnectionString=strConnection;
  (7)myCon.Open();
  (8)SqlCommand cmd=new SqlCommand();
  (9)cmd.Connection=myCon;
  (10)cmd.CommandText="Pj_SavePjResult";
  (11)cmd.CommandType=CommandType.StoredProcedure;
  (12)SqlParameter prevalue=new SqlParameter("@revalue",SqlDbType.Int);
  (13)prevalue.Direction=ParameterDirection.Output;
  第1~13行用于获取被评价教师的信息,及进行数据库的链接,指定命令类型为存储过程方式,关于此类应用网上有很多解释,此处不讨论。
  (14)for (int i = 0; i < GridView1.Rows.Count; i++)
  (15){
  (16)string strpjtype=((Label)(GridView1.Rows[i].FindControl("Label1"))).Text.ToString().Trim();
  (17)string strpjnr=((Label)(GridView1.Rows[i].FindControl("Label2"))).Text.ToString().Trim();
  (18)string strNewFen=((RadioButtonList)(GridView1.Rows[i].FindControl("R
  (19)string strFen=((Label)(GridView1.Rows[i].FindControl("Label3"))).Text.ToString().Trim();
  (20)int intFen=Convert.ToInt32(strFen);
  (21)int intNewFen=Convert.ToInt32(strNewFen);
  (22)intNewFen=intFen / 5 * intNewFen;
  (23)cmd.Parameters.Clear();
  (24)cmd.Parameters.Add("@teacherid", SqlDbType.NVarChar, 10).Value = strTeacherid;
  (25)cmd.Parameters.Add("@teacherinfo", SqlDbType.NVarChar, 50).Value = strTeacherinfo;
  (26)cmd.Parameters.Add("@pjtype", SqlDbType.NVarChar,16).Value = strpjtype;
  (27)cmd.Parameters.Add("@pjnr", SqlDbType.NVarChar, 60).Value = strpjnr;
  (28)cmd.Parameters.Add("@fen", SqlDbType.Int).Value=intNewFen;
  (29)cmd.Parameters.Add("@pjr", SqlDbType.NVarChar, 20).Value = Convert.ToString(HttpContext.Current.Session["person"]);
  (30)cmd.Parameters.Add("@userid", SqlDbType.NVarChar, 20).Value = Convert.ToString(HttpContext.Current.Session["userid"]);
  (31)cmd.Parameters.Add("@pjlb", SqlDbType.NVarChar, 8).Value = "xitotea";
  (32)cmd.Parameters.Add(prevalue);
  (33)cmd.ExecuteNonQuery();
  (34)}
  第14~34行,通过一个FOR循环,读取每一行的评价结果,循环写入数据库的评价结果表中。这里通过for(int i=0;i  第16行:string strpjtype=((Label)(GridView1.Rows[i].FindControl("Label1"))).Text.ToString().Trim();是读取评价分类用的,由于GridView中该列的数据是通过一个Label来展现,所以要读取其内容,要首先通过访问容件控件的方法FindControl,找到该控件,并将其显示地转换为label类,并以文本字符串的方式传递给字符串变量strpjtype。
  第17、18、19行的含义基本相同,不再赘述。
  第22行intNewFen=intFen/5*intNewFen;,是进行一个分值的转换。
  第23行cmd.Parameters.Clear();,由于我们是通过一个FOR循环来通过存储过程填充数据,而为了减少数据库的断开与连接的频繁,我们在每次更新数据后,并不断开链接,仅是变更传递参数,所以在每次给参数赋值前,必需先对参数进行清空处理。
  第35行,关闭链接,第36行,解构链接对象,这句很重要,如果没有这行,系统资源仍会有一些被浪费。
  第37行,对已评价完的教师从列表中清除。
  Gridview控件的功能强大,应用既方便又很复杂,必需多多实践才能领会,希望我的经验能给大家以帮助!
  
  参考文献
  [1] C#和.NET 2.0.实战:平台、语言与框架[M].人民邮电出版社.
  [2] ASP.NET与AJAX深度剖析范例集[M].中国青年出版社.
其他文献
各地级以上市人民政府,各县(市、区)人民政府,省政府各部门、各直属机构:省人力资源社会保障厅制定的《广东省行政机关公务员“十二五”培训规划纲要》已经省人民政府同意,现转发给
自然资源开发利用与保护应当由消极保护转向主动进取,如由探矿权资产化转向探矿权证券化。市场化配置、创业板松绑、矿业权登记,为构建我国风险勘查资本市场打开了通道。非均
社会主义核心价值观融入“思想道德修养与法律基础”课主要涉及三个基本问题:一是社会主义核心价值观本质和内涵的阐述;二是“思想道德修养与法律基础”课的内容中价值观概念
从市场供求关系、库存行为、政府定价能力、行业集中度四个角度,分析了目前煤电企业的成本传导能力,并以样本电厂2016年大用户直接交易数据为依据,论证了现阶段煤电企业存在
文化是一个国家、一个民族的灵魂。文化兴国运兴,文化强民族强。文章在江西民歌音乐展现的情与景中,探寻其在不同历史时期、社会背景下传承发展的踪迹,试图寻找其在新时期发
为不断适应国家棉花目标价格试点工作要求,帮助企业检验人员充分掌握最新发布的相关国家标准,促进企业提高棉花收购及加工质量,近日由自治区纤维纺织产品质量监督检验研究中
基于学生认知不够、学习效果有待提高;教师教学方式单一、课堂管理有待加强;学生成绩考核方式有待改进以及部分教师专业素养欠缺等原因,导致学生对高校思政课兴趣不高,直接影
等离子体-物理气相沉积(PS-PVD)技术融合了等离子体喷涂(PS)和电子束-物理气相沉积(EB-PVD)的优点,沉积效率高、成本相对较低和可制备柱状晶结构涂层。因此,PS-PVD在制备先进
创业教育是新时期高校改革的内在需要,对创新创业型人才培养具有重要意义。高校是传承、创造、推广文化的主要渠道,要在创业教育过程中发挥学科优势推进创业文化的建设。进而
地表基质层是一个跨越多门类自然资源业务体系和学科体系,且科学内涵十分丰富的新概念。地表基质调查作为新时代自然资源调查监测体系不可或缺的组成部分和全新工作领域,是带