asp.net,mvc,表格控件
- 格式:docx
- 大小:31.53 KB
- 文档页数:14
是什么?简介简单来说, 是⼀个使⽤ HTML、CSS、JavaScript 和服务器脚本创建⽹页和⽹站的开发框架。
微软在2001年开发的第⼀个版本的,是⼀种建⽴在.NET之上的Web运⾏环境。
借助于,可以创造出内容丰富的、动态的、个性化的Web站点。
简单易学、功能强⼤、应⽤灵活、扩展性好,可以使⽤任何.NET兼容语⾔。
现在已经更新到4.7的版本了,但只能运⾏在Windows系统上,并不是跨平台的。
所以,微软后续⼜发布了的开源和跨平台版本的 Core(最新版已经更新到2.0)。
虽然⽬前最新技术是 Core,但作为 Core的基⽯,也并没有过时。
所以对于初学者来说,依然是⼀个不错的⼊门⽅向。
特点⼀.Web 控件 提供了七⼤类 Web 控件,分别是:1. ⽤于处理静态和动态数据的标准控件2. ⽤于显⽰来⾃数据源控件中指定的数据源数据的数据控件3. ⽤于各种不同类型验证的验证控件4. ⽤于在 ⽹页上创建菜单和其他导航辅助⼯具的导航控件5. ⽤于为 Web 应⽤程序提供可靠完整且⽆需编程的登录控件6. 使⽤户能够动态地对 Web 应⽤程序进⾏个性化设置的 Web 部件控件7. 在异步回发过程中进⾏部分页更新的 AJAX控件除此之外,还可以使⽤由开发⼈员或第三⽅软件供应商创建的⾃定义的控件。
有了这些控件,会⼤⼤降低开发⼈员的⼯作量。
例如使⽤GridView绑定数据,不⽤再写⼀套复杂的增删改查逻辑,只需要简单⼏步设置就能将数据绑定到控件上,省去了编写⼤量代码的时间。
开发⼈员甚⾄⽆需了解太多的编码知识,只需要将组件拖拉,组合,设计,就能快速开发出⼀个⽹页。
⼆.设计和代码分离采⽤了代码后置技术,将Web界⾯元素和程序逻辑分开显⽰,这样可以使代码更清晰,有利于阅读和维护。
三.⽀持服务器脚本语⾔使⽤⼀种服务端脚本技术(Razor),将服务器端代码同HTML代码结合起来,在⽹页返回给浏览器之前,基于服务器的代码可以创建动态的内容,并且可以运⾏更复杂的任务,使Web开发更加⾼效。
-GridView实现点击编辑列加载:点击编辑:数据库设计:前端代码:1. DataKeyNames="ID"设置点击“编辑”选项的时候,要获取的值,⼀般获取ID主键,便于修改数据。
2. AutoGenerateColumns="False"设置“设置是否⾃动⽣成列”为False。
3. ReadOnly="True"设置为只读,这样在点击编辑的时候,设置为只读的字段,不会变成⽂本框。
4. DataField="ID"设置绑定数据的字段名称。
5. OnRowEditing ="GridView1_RowEditing"编辑。
6. OnRowDeleting ="GridView1_RowDeleting"删除。
7. OnRowCancelingEdit ="GridView1_RowCancelingEdit"取消。
8. OnRowUpdating ="GridView1_RowUpdating1"> 更新。
<form id="form1" runat="server"><div><asp:GridView ID="GridView1" runat="server"DataKeyNames="ID"AutoGenerateColumns="False"OnRowEditing ="GridView1_RowEditing"OnRowDeleting ="GridView1_RowDeleting"OnRowCancelingEdit ="GridView1_RowCancelingEdit"OnRowUpdating ="GridView1_RowUpdating1"><Columns><asp:BoundField HeaderText="ID" DataField="ID" ReadOnly="True" /><asp:BoundField HeaderText="Name" DataField="Name" ReadOnly="True" /><asp:BoundField HeaderText="Score" DataField="Score"/><asp:CommandField HeaderText ="删除" ShowDeleteButton="true" /><asp:CommandField HeaderText="修改" ShowEditButton="True" /></Columns></asp:GridView></div></form>后台代码:protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){BindSoure();}}/// <summary>/// 绑定数据源/// </summary>public void BindSoure(){this.GridView1.DataSource = SQLHelper.ExecuteTable("select ID, Name, Score from Tb_Mark", mandType.Text); this.GridView1.DataBind();}/// <summary>/// 编辑记录/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e){//获得编辑列GridView1.EditIndex = e.NewEditIndex;//重新绑定数据BindSoure();}/// <summary>/// 删除记录/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e){//获取编辑列的键值对中的值。
点聚weboffice 6.0 在线Word,excel,wps编辑控件WebOffice是一款由北京点聚信息技术有限公司提供的完全免费(商业用途也免费)且功能强大的在线Word/excel/wps编辑辅助控件,可以实现:1.在线编辑Word、Excel、PPT、WPS... ...2.全面支持MS Office的界面定制,包括对于Office2007的全面支持3.修订留痕4.限制打印、保存、复制5.直接保存到服务器,支持标准Http Post协议6.强大的书签管理7.套红、文档保护8.模板管理9.其他功能扩展点聚WebOffice是基于客户端的ocx控件,它的功能是将Office文档(Word、Excel、WPS)嵌入到浏览器中,并调用Office中各种接口,完成文档编辑工作,然后使用控件的Http 接口模拟表单提交,发送到数据处理页面(此文档举例为saveDoc.asp页,代码见演示文件),完成文档的存档工作。
在本地测试的时后,首先要安装插件和证书WebOffice_Setup.exe和孙小钢.pfx,然后用VS来运行示例,不要直接打开HTML,那样会报错的webOffice控件自动下载是指在打开网页时,网页会自动把webOffice控件下载下来,从而可以将word、excel嵌入到网页中。
控件自动下载的相关代码如下:< object id=WebOffice height=768 width="100%"style="LEFT: 0px; TOP: 0px"classid="clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5" codebase="../js/WebOffice1.ocx#version=6,0,4,0"><param name="_ExtentX" value="6350"><param name="_ExtentY" value="6350">object>上面的脚本意思是:自动更新classid=FF1FE7A0-0578-4FEE-A34E-FB21B277D561 的COM组件,更新地址为../js/WebOffice1.ocx,codebase后的路径为相对路径也可为绝对路径,要更新的最新版本为6,0,4,0。
MVC教程⼀:MVC简介⼀、MVC模式简介MVC模式是⼀种流⾏的Web应⽤架构技术,它被命名为模型-视图-控制器(Model-View-Controller)。
在分离应⽤程序内部的关注点⽅⾯,MVC是⼀种强⼤⽽简洁的⽅式,尤其适合应⽤在Web应⽤程序中。
MVC将应⽤程序的⽤户界⾯分为三个主要部分:1. 模型:⼀组类,描述了要处理的数据以及修改和操作数据的业务规则。
2. 视图:定义应⽤程序⽤户界⾯的显⽰⽅式。
3. 控制器:⼀组类,⽤于处理来⾃⽤户、整个应⽤程序流以及特定应⽤程序逻辑的通信。
1、MVC在Web框架中的应⽤MVC模式经常应⽤于Web程序设计中。
在 MVC中,MVC三个主要部分的定义⼤致如下:模型:模型是描述程序设计⼈员感兴趣问题域的⼀些类,这些类通常封装存储在数据库中的数据,以及操作这些数据和执⾏特定域业务逻辑的代码。
在 MVC中,模型就像使⽤了某种⼯具的数据访问层(Daa Access Layer),这种⼯具包括实体框架(Entity Framework)或者与包含特定域逻辑的⾃定义代码组合在⼀起的其他实体框架。
视图:⼀个动态⽣成HTML页⾯的模板。
控制器:⼀个协调视图和模型直接关系的特殊类。
它响应⽤户输⼊,与模型进⾏对话,并决定呈现哪个视图(如果有的话)。
在 MVC中,这个类⽂件通常以后缀名Controller表⽰。
2、执⾏顺序在 MVC中的执⾏顺序可以⽤下图进⾏表⽰,如图所⽰:其执⾏顺序可以描述如下:⽤户在浏览器地址栏⾥⾯输⼊要访问的⽹址,然后发起请求,控制器接收⽹页发送的请求,如果需要请求数据,则先从Model⾥⾯取出数据交给控制器,然后把数据交给视图,视图负责展现数据。
如果不需要请求数据,则直接返回视图呈现给⽤户。
⼆、中的MVC1、 MVC和1. MVC是技术的⼦集。
2. MVC在核⼼基础之上构建:1. 依赖于HttpHandler,如请求是如何进⼊控制器的。
2. 依赖于Session、Cookie、Cache、Application等状态保持机制。
Mvc表单提交之List集合⼀、说明 Mvc中Action的参数可以⾃动接收和反序列化form表单的值,2.对于name=value类型,只要Action参数的变量名和input的name相同就⾏,不区分⼤⼩写3.对于Model类型的,只要Action参数Model的字段名和input的name相同就⾏,不区分⼤⼩写4.对于List类型,如下⼆、List 基础数据类型提交Html代码<div class="panel panel-default"><div class="panel-heading"><div class="panel-title"> List 基础数据类型提交</div></div><div class="panel-body"><form action="@Url.Action("TestOne")" method="post"><div class="form-group"><input name="name" value="张三" /></div><div class="form-group"><input name="name" value="李四" /></div><input class="btn btn-success" type="submit" value="提交" /></form></div></div>Action接收public JsonResult TestOne(List<string> name){return Json(name);}参数传递:显⽰结果:三、List<Model>类型提交json数组<div class="panel panel-default"><div class="panel-heading"><div class="panel-title"> List<Model> 数据类型提交(⼀)</div></div><div class="panel-body"><form action="@Url.Action("TestTwo")" method="post"><table><thead><tr><th>ID</th><th>Name</th></tr></thead><tbody><tr><td><input name="ID" value="1" /></td><td><input name="Name" value="张三" /></td></tr><tr><td><input name="ID" value="2" /></td><td><input name="Name" value="李四" /></td></tr></tbody></table><input type="submit" class="btn btn-success" id="submit1" value="提交" /></form></div></div>使⽤Ajax提交$('#submit1').click(function () {var form = $(this).parents('form');var result = [];form.find('tbody tr').each(function () {var thisItem = $(this);result.push({ID: thisItem.find("input:eq(0)").val(),Name: thisItem.find('input:eq(1)').val()})});$.post(form.attr('action'), {stuList: result, //直接提交json数组}, function (data) {alert(data);});return false;});后台action接收处理public JsonResult TestTwo(List<Student> stuList){return Json(stuList);}参数传递:四、List<Model>类型提交之json数组字符串HTML内容同上,整合json数组,以字符串格式传递$('#submit2').click(function () {var form = $(this).parents('form');var result = [];var data = form.serializeArray();for (var i = 0; i < data.length; i++) {var item = data[i];var stu_i = Math.floor(i / 2); //没2(对象的属性个数)个位⼀组,整合到⼀个对象中 if (!result[stu_i])result[stu_i] = {}; //初始化数组中的对象result[stu_i][item['name']] = item['value'];}(result);$.post(form.attr('action'), {stuList: JSON.stringify(result), //提交json字符串,后台⾃⼰反序列化other: 'test'}, function (data) {alert(data);});return false;});action后台参数接收处理public JsonResult TestThree(string stuList, string other = "没有内容"){//⾃⼰反序列化处理,更灵活处理List<Student> list = JsonConvert.DeserializeObject<List<Student>>(stuList);return Json(new { stu = list, other = other });}参数传递:返回结果:特别说明提交的Josn数组整合⽅式1:从页⾯dom中获取//处理⽅式1,从页⾯获取值var result = [];form.find('tbody tr').each(function () {var thisItem = $(this);result.push({ID: thisItem.find("input:eq(0)").val(),Name: thisItem.find('input:eq(1)').val()})});整合⽅式2:从表单的序列化数组中获取var result = [];var data = form.serializeArray();for (var i = 0; i < data.length; i++) {var item = data[i];var stu_i = Math.floor(i / 2); //没2(对象的属性个数)个位⼀组,整合到⼀个对象中 if (!result[stu_i])result[stu_i] = {}; //初始化数组中的对象result[stu_i][item['name']] = item['value'];}(result);。
mvc4.0razor页⾯表格显⽰ mvc4.0 razor页⾯获取数据库表记录显⽰在页⾯上,页⾯前段显⽰字段名必须区分⼤⼩写,否则不认识字段名,提⽰错误信息1.control类public ActionResult ListUser(){//TestDataContext db = new TestDataContext();//IEnumerable<tbUser> model = from u in db.tbUser orderby u.vchUserCode select u;//return View(model);try{string strSql = "select VCHUSERCODE,VCHUSERNAME,VCHORGCODE,INTKIND,INTSTATUS," + //VCHPASSWORD,"VCHSEX, VCHIDCARD, TSPLATERLOGIN, VCHLATERIP, VCHEMAIL, VCHCREATOR,DATCREATE, VCHDES, DATPASSWORD " +"from DBO.TBUSER order by DATCREATE;";DbHelper db = new DbHelper();DbCommand cmd = db.GetSqlStringCommand(strSql);DataSet ds = db.ExecuteDataSet(cmd);List<IDictionary> list = ConvertToDictionary(ds.Tables[0]);return View(list);}catch (Exception ex){throw new Exception(ex.Message);}}private List<IDictionary> ConvertToDictionary(DataTable dtObject){var columns = dtObject.Columns.Cast<DataColumn>();var dictionaryList = dtObject.AsEnumerable().Select(dataRow => columns.Select(column =>new { Column = column.ColumnName, Value = dataRow[column] }).ToDictionary(data => data.Column, data => data.Value)).ToList().ToArray();return dictionaryList.ToList<IDictionary>();}2.razor页⾯@* @model IEnumerable<Contract.Web.Code.tbUser> *@@using System.Dynamic@model List<System.Collections.IDictionary>@{ViewBag.Title = "ListUser";}<h2>ListUser</h2><p>@Html.ActionLink("刷新", "ListUser")</p>@{var result = new List<dynamic>();foreach (var emprow in Model){var row = (IDictionary<string, object>)new ExpandoObject();Dictionary<string, object> eachEmpRow = (Dictionary<string, object>)emprow;foreach (KeyValuePair<string, object> keyValuePair in eachEmpRow){row.Add(keyValuePair);}result.Add(row);}//var grid = new WebGrid(result);var grid = new WebGrid(source: result , columnNames:new[]{"VCHUSERCODE","VCHUSERNAME","VCHEMAIL"},defaultSort: "VCHUSERCODE", rowsPerPage: 20); }@* @if (@Model != null){@grid.GetHtml(tableStyle: "grid", headerStyle: "head", alternatingRowStyle: "alt");}*@ @grid.GetHtml( tableStyle: "grid",headerStyle: "head", alternatingRowStyle: "alt", columns: grid.Columns( grid.Column("VCHUSERCODE", "⽤户编号"), grid.Column("VCHUSERNAME", "⽤户名称"), grid.Column("VCHEMAIL", "Email") ) )。
.NETFramework各版本区别(简介)本⽂通过在⽹络资料整理⽽得。
.NET Framework1.11、⾃带了对mobile 控件的⽀持。
(在1.0版本是以附加功能实现)2、加⼊了应⽤程序的代码安全访问功能。
3、⾃带了对ODBC和oracle数据库⽀持。
(在1.0版本是以附加功能实现)4、增加了对IPv6的⽀持,变更了⼤量的API。
.NET Framework2.01、.NET框架2.0的组件包含在VS2005和SQL server2005⾥⾯。
2、⾸次实现了对64位平台⽀持(很多程序⽤到的功能基本都提供了2.0⽀持)。
3、WinForm①2.0位winform提供了表格控件:DataGridView。
②提供了窗体加载⽹页的WebBrowser控件③为分割窗体提供了了SplitContainer控件④为解决后台图像下载或数据库事务缓慢,提供了BackgroundWorker组件4、①体系加⼊了:母版页、ViewState,缓存(Cache)。
②添加新控件:⽤于显⽰和编辑数据的GridView、DatailsView、FormView控件。
③建站等变得简单,使⽤的代码量减少。
5、①提供了对⽤户定义类型(UDT)、异步数据库操作、XML数据类型、⼤值类型和快照隔离⽀持。
②对允许应⽤程序通过SQL Server 2005⽀持多活动结果集(MARS)的新属性⽀持。
6、2.0⽀持FTP,增强了I/O读写,SMTP⽀持,提供了新的XSL转换(XSLT)处理器,Web服务等功能7、调试器显⽰属性①可以控制当调试应⽤程序时VS显⽰类或成员的⽅式8、编辑并继续①该功能可以在VS中调试程序的⽤户在终端模式执⾏的同事更改源代码。
编辑完之后⽤户可以继续执⾏调试。
.NET Framework3.01、加⼊WPF(Windows Presentation Foundation):⽤户体验更佳2、加⼊WCF(Windows Communication Foundation):提供SOA(⾯向服务的软甲架构)⽀持的安全的⽹络服务(Web Service)框架,主要解决程序之间的通信问题3、加⼊WF(Windows Workflow Foundation):提供⼀个设计与发展⼯作流导向应⽤程序基础⽀持的应⽤程序接⼝,主要是控制程序之间的逻辑转换。
中FormView(表单视图)的使⽤前台绑定 中 FormView(表单视图)的使⽤前台绑定。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Fvw.aspx.cs" Inherits="Fvw" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title>⽆标题页</title></head><body><form id="form1" runat="server"><div><h3>FromView</h3><hr /><asp:FormView ID="fvw" runat="server" AllowPaging="True"DataKeyNames="ProductID" DataSourceID="SqlDataSource1"><EditItemTemplate>ProductID:<asp:Label ID="ProductIDLabel1" runat="server"Text='<%# Eval("ProductID") %>' /><br />ProductName:<asp:TextBox ID="ProductNameTextBox" runat="server"Text='<%# Bind("ProductName") %>' /><br />CategoryID:<asp:TextBox ID="CategoryIDTextBox" runat="server"Text='<%# Bind("CategoryID") %>' /><br />UnitPrice:<asp:TextBox ID="UnitPriceTextBox" runat="server"Text='<%# Bind("UnitPrice") %>' /><br /><asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True"CommandName="Update" Text="更新"/> <asp:LinkButton ID="UpdateCancelButton" runat="server"CausesValidation="False" CommandName="Cancel" Text="取消"/></EditItemTemplate><InsertItemTemplate>ProductName:<asp:TextBox ID="ProductNameTextBox" runat="server"Text='<%# Bind("ProductName") %>' /><br />CategoryID:<asp:TextBox ID="CategoryIDTextBox" runat="server"Text='<%# Bind("CategoryID") %>' /><br />UnitPrice:<asp:TextBox ID="UnitPriceTextBox" runat="server"Text='<%# Bind("UnitPrice") %>' /><br /><asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True"CommandName="Insert" Text="插⼊"/> <asp:LinkButton ID="InsertCancelButton" runat="server"CausesValidation="False" CommandName="Cancel" Text="取消"/></InsertItemTemplate><ItemTemplate>ProductID:<asp:Label ID="ProductIDLabel" runat="server" Text='<%# Eval("ProductID") %>' /><br />ProductName:<asp:Label ID="ProductNameLabel" runat="server"Text='<%# Bind("ProductName") %>' /><br />CategoryID:<asp:Label ID="CategoryIDLabel" runat="server"Text='<%# Bind("CategoryID") %>' /><br />UnitPrice:<asp:Label ID="UnitPriceLabel" runat="server" Text='<%# Bind("UnitPrice") %>' /><br /><asp:LinkButton ID="EditButton" runat="server" CausesValidation="False"CommandName="Edit" Text="编辑"/> <asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False"CommandName="Delete" Text="删除"/> <asp:LinkButton ID="NewButton" runat="server" CausesValidation="False"CommandName="New" Text="新建"/></ItemTemplate></asp:FormView><asp:SqlDataSource ID="SqlDataSource1" runat="server"ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"DeleteCommand="DELETE FROM [Products] WHERE [ProductID] = @ProductID"InsertCommand="INSERT INTO [Products] ([ProductName], [CategoryID], [UnitPrice]) VALUES (@ProductName, @CategoryID, @UnitPrice)"SelectCommand="SELECT [ProductID], [ProductName], [CategoryID], [UnitPrice] FROM [Products] ORDER BY [ProductID] DESC"UpdateCommand="UPDATE [Products] SET [ProductName] = @ProductName, [CategoryID] = @CategoryID, [UnitPrice] = @UnitPrice WHERE [ProductID] = @ProductID"> <DeleteParameters><asp:Parameter Name="ProductID" Type="Int32"/></DeleteParameters><UpdateParameters><asp:Parameter Name="ProductName" Type="String"/><asp:Parameter Name="CategoryID" Type="Int32"/><asp:Parameter Name="UnitPrice" Type="Decimal"/><asp:Parameter Name="ProductID" Type="Int32"/></UpdateParameters><InsertParameters><asp:Parameter Name="ProductName" Type="String"/><asp:Parameter Name="CategoryID" Type="Int32"/><asp:Parameter Name="UnitPrice" Type="Decimal"/></InsertParameters></asp:SqlDataSource></div></form></body></html>/web.config<connectionStrings><add name="NorthwindConnectionString" connectionString="DataSource=.;Initial Catalog=Northwind;Integrated Security=True"providerName="System.Data.SqlClient"/></connectionStrings>。
MVC概述⽬标:学习 MVC 和 WebForm的不同之处。
学习在合适的地⽅使⽤ MVC。
MVC(Model-View-Controller)结构模式把⼀个对象分离成3⼤块:Model(数据模型层),View(视图层),Controller(控制层), MVC 框架提供了⼀种有别于 WebForm的模式,提供了基于mvc的⽹页对象。
MVC是⼀种轻量级的,⾼度可测试的展⽰型框架(和WebForm对⽐),并且融合了已有的的特征,例如母版页以及基于会员的验证。
MVC 框架是定义在System.Web.Mvc这个命名空间下并且这是⼀个基本的命名空间。
并且⽀持System.Web命名空间部分。
MVC是⼀种标准的设计模式⼴为许多开发⼈员所熟悉。
⼀些类型的⽹络应⽤程序将会受益于 MVC,另外⼀些其他的将会继续使⽤传统的WebForm模式并使⽤postbacks,还有⼀些应⽤程序将会把MVC 和WebForm结合起来让他们感觉是近似的,当然,也不排除其他的⽅法。
MVC 框架包括以下组件: 步骤 01:调⽤Controller的action并且⾃带参数值。
模型层(Models):模型对象是程序的⼀部分实现了应⽤程序数据域的逻辑。
通常的说,模型对象检索和存储模型陈述在数据库中。
举个例⼦:⼀个产品对象也许会从数据库中检索信息,对它进⾏操作,写⼊更新信息然后回传给产品表在SQL SERVER数据库中。
在⼩程序中,模型经常在理论上分离,当然不是物理上的分离。
举个例⼦:如果程序仅仅只是读了⼀个数据集然后把这个数据集返回给View,这个程序并没有⼀个和类联系起来的物理模型层。
在那种情况下,数据集其实是扮演了⼀个模型对象的⾓⾊。
视图层(Views):视图是⼀个把程序显⽰在屏幕(UI)上的“容器”。
通常来说,界⾯其实是从模型对象创建。
⼀个例⼦,⼀个可编辑的产品表的视图,⾥⾯放了⼀些TEXTBOX,下拉框(DropDownList),⼀些CheckBox,当然这些都是基于产品对象的。
MVC视图(显⽰数据库数据表格) MVC 视图(显⽰数据库数据表格)在这篇教程中,我⽰范了显⽰⼀系列数据库记录的两个⽅法。
我演⽰了在⼀个HTML表格中格式化⼀系列数据库记录的两个⽅法。
⾸先,我演⽰了如何直接在视图中格式化数据库记录。
接下来,我⽰范了如何在格式化数据库记录时利⽤部分类。
1.1创建模型类我们将要显⽰Movies数据库表中的⼀系列记录。
Movies数据库表包含下⾯的列:Column Name Data Type Allow NullsId Int FalseTitle Nvarchar(200)FalseDirector NVarchar(50)FalseDateReleased DateTime False为了表⽰Movies数据库表,我们将利⽤Linq to SQL作为我们的数据访问技术。
换⾔之,我们将会使⽤LINQ to SQL来绑定我们的MVC模型类。
创建⼀系列LINQ to SQL类的最快办法就是利⽤Visual Studio Object Relational Designer(Visual Studio 对象关系设计器)。
右键点击Models⽂件夹,选择“Add(添加)”,“New Item(新建项)”,选择Linq To Sql类模板,将这个类命名为Movie.dbml,并且点击Add按钮(如图1)。
图1:创建LINQ to SQL类在你创建完Movie Linq to Sql 类以后,会⽴即出现对象关系设计器。
你可以将数据库表从服务器浏览器(Server Explorer)窗⼝中拖曳到对象关系设计器中,以便创建代表着特定数据库表的Linq to Sql类。
你需要将Movies数据库表添加到对象关系设计器中(如图2)。
图2:使⽤对象关系设计器默认情况下,对象关系设计器将会试图创建⼀个类名,该类名是数据库表名的单数版本。
换⾔之,如果你有⼀个叫做Customers的数据库表,那么对象关系设计器将会创建⼀个叫做Customer的类名。
最近做过一个将页面表格导出至PDF的功能,现在将它整理出来,以备不时之需。
PDF模板是用的是.net报表文件(.rdlc),原理就是将数据填充到报表文件中,利用Microsoft.Reporting.WebForms.LocalReport类的方法,输出PDF字节流,然后,通过定义Response的HTTP标头定义,在浏览器输出PDF文件。
以下是关键部分的代码:1. 首先,准备一个输出PDF字节流的方法:using System; using System.Collections.Generic; using ATA.Toeic.Models; using ATA.Toeic.DAL; using System.IO; using Microsoft.Reporting.WebForms; namespace ATA.Toeic.BLL { public class AdmissionTicketBLL { private RegistrationDAL dal = new RegistrationDAL(); /// <;summary>; /// 『单个导出』 /// 导出包含一张准考证的pdf 文件 /// <;/summary>; /// <;param name=";addmissionFormId";>;准考证号<;/param>; /// <;param name=";reportPath";>;报表模板路径<;/param>; /// <;returns>;pdf文件字节流<;/returns>; public byte[] ExportTicket(string addmissionFormId, string reportPath, out string mimeType) { List<;string>; arrId = new List<;string>;(); arrId.Add(addmissionFormId); return ExportTicket(arrId, reportPath, out mimeType); } /// <;summary>; /// 『批量导出』 /// 导出多张准考证的pdf文件 /// <;/summary>; /// <;param name=";arrAddmissionFormId";>;需要导出的准考证号<;/param>; /// <;returns>;pdf文件字节流<;/returns>; public byte[] ExportTicket(List<;string>; arrAddmissionFormId, string reportPath, out string mimeType) { LocalReport localReport = new LocalReport(); localReport.ReportPath = reportPath; // 报表对象的模板文件的路径 // 报表对象的数据源 ReportDataSource reportDataSource = new ReportDataSource(";dsList";,GetAdmissionTicketList(arrAddmissionFormId.ToArray()) // 这个方法返回一个IList<;Model>;对象); localReport.DataSources.Add(reportDataSource); string reportType = ";PDF";; string encoding; string fileNameExtension; //The DeviceInfo settings should be changed based on the reportType ///en-us/library/ms155397.aspx string deviceInfo = ";<;DeviceInfo>;<;OutputFormat>;PDF<;/OutputFormat>;<;/DeviceInfo>;";; Warning[] warnings; string[] streams; byte[] renderedBytes; //Render the report renderedBytes = localReport.Render( reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings); return renderedBytes; } } }2. 在action中定义HTTP标头,输出PDF文件,在这里批量和单个已经没有区别了,区别包含在byte[]的字节流中。
(七)的数据绑定控件--GridView控件的使⽤数据绑定的层次结构数据绑定控件将数据以标记的形式呈现给请求数据的浏览器。
常⽤数据绑定控件控件名称说明GridView以表格的⽅式显⽰和编辑数据,数据⽔平重复显⽰,第⼀⾏为表头DetailsView⼀次只能显⽰、编辑、插⼊或删除⼀条记录。
默认情况下,将记录的每个字段显⽰在它⾃⼰的⼀⾏内,字段名在左侧。
与DetailsView控件相似,⼀次也只能显⽰或编辑⼀条记录。
FormView需要给其设定⼀个模板,⽤于进⾏表单设计和详细信息显⽰。
DataList可以根据⽤户指定的格式来显⽰数据(⽐如分列显⽰),这种格式由模板和样式进⾏定义,数据以⾏和列双向显⽰。
Repeater没有包含内置的布局或样式,需要由Web开发者指定所有的⽤于显⽰数据的内部控件和显⽰样式ListView以嵌套容器模板和占位符的⽅式提供灵活的数据显⽰模式⼀、GridView控件是表格控件,所以它将数据以⼆维表的形式展现出来,控件的每⼀⾏即为每条数据,⽽列则为表格中对应的数据列。
我们通过借助数据绑定控件来实现类似表格这样的数据展⽰,其中GridView就是⽤来展⽰列表的数据绑定控件。
使⽤⽅法:1、在Web页⾯中放⼊⼀个GirdView控件放⼊成功后,可以修改⼀些GridView控件的Id:2、切换⾄设计视图,选择“编辑列”可实现对每⼀列的配置:3、选择BoundField,根据数据源的属性配置字段信息,其中DataField为字段名,HeaderText为标题:编辑后,页⾯会⽣成如下代码:4、在服务端通过来读取数据,并进⾏数据绑定显⽰效果如下:5、在本例中,如果要想让性别和是否删除显⽰为中⽂,我们可以采⽤Eval⽅法来在页⾯中进⾏数据绑定,这时就需要配合Grid的模板列⼀起来使⽤了:6、要想让我们的GridView⽀持分页,那么我们需要启⽤相关的分页参数:若要启⽤分页功能,需要将AllowPaging属性设置为true。
竭诚为您提供优质文档/双击可除,mvc,表格控件
篇一:在aspnetmVc中使用activeReports报表控件
在mVc中使用activeReports报表控件
随着mVc模式的广泛运用,对web应用系统的开发带来了巨大的影响,我们好像又回到了原来的asp时代,视乎这是一种后退而不是一种进步,不过mVc模式给我们带来的影响不仅限于我们所看到的这一点.。
mVc看上去是使用原来的html页面来呈现内容,但其核心是.net路由引擎,通过.net 路由引擎使得mVc设计模式更容易被理解,更方便开发人员所使用,而且不必担心视图状态以及页面的生命周期。
activeReports最初是为传统的.netwebForms系统所设计,但也可用于mVc模式的系统中。
下面就来谈一谈activeReports6.0如何用于mVc模式的系统中。
1、创建一个mVc3工程,并添加activeReports6.0到工程中
2、在工程中添加一个controller,然后在controller
中添加一个action方法。
我们将报表对象存放在Viewdata 对象中,通过Viewdata将报表从controller传递到View 中。
publicclasshomecontroller:controller{
publicactionResultReport()
{
Viewdata["Report"]=new_rpt;
returnView();
}
}
3、通过actiion方法创建一个Viewpage,并添加activeReports的webViewer到Viewpage中:
4、mVc中的Viewpage并不支持.cs的后台代码文件,这一点是和mVc设计理念相符的。
然而,我们需要从Viewdata 中得到controller中传过来的报表对象,并将报表对象设置给webViewer,这些逻辑需要在webViewer的load事件中完成:
protectedvoidwebViewer1_load(objectsender,eventargs e)
{
webViewer1.Report=
(datadynamics.activeReports.activeReport)Viewdata[" Report"];
}
5、当webViewer的Viewtype设置为acrobatReader时,我们需要设置相应的httphandlers,为了路由引擎不处理这些http请求,并保持http请求的默认行为,我们需要对ignoreRoute进行相应的设置,修改global.asax中的RegisterRoutes方法:
publicstaticvoidRegisterRoutes(Routecollectionroute s)
{
routes.ignoreRoute("{resource}.axd/{*pathinfo}");
routes.ignoreRoute("{*allarcachitems}",new{allarcac hitems=
@".*\.arcacheitem(/.*)"});
routes.mapRoute("default",//Routename
"{controller}/{action}/{id}",//uRlwithparameters
new{controller="home",action="index",id=urlparamete r.optional}//parameterdefaults
);
}
6、在web.config中添加以下httphandlers的配置信息
type="datadynamics.activeReports.web.handlers.Rpxha ndler,activeReports.web,Version=x.x.xxxx.x,culture= neutral,publickeytoken=cc4967777c49a3ff"/>
type="pi ledReporthandler,
activeReports.web,Version=x.x.xxxx.x,culture=neutra l,
publickeytoken=cc4967777c49a3ff"/>
type="datadynamics.activeReports.web.handlers.webca cheaccesshandler,activeReports.web,Version=x.x.xxxx .x,culture=neutral,
publickeytoken=cc4967777c49a3ff"/>
7、运行程序可以查看报表
源码下载:在mVc中使用activeReports报表控件同时,安装activeReports产品之后,在这个目录可以找到源代码,c:\users\用户名
\documents\componentonesamples\activeReportsdevelop er7\professional\c#
篇二:mVc3.0实例系列之创建数据表格(14)
我要学mVc3.0(十四):mVc3.0实例系列之创建数据表格概述
在mVc里面微软并没有给我们提供像gridView 表格之类的控件,但是作为web开发人员表格数据显示是我们面临的常见任务之一,从这节开始我们就一步一步学习如何在基于Razor引擎的mVc页面中实现像gridView 一样的表格,并且实现表格中的排序、分页、筛选等功能,便于我们更好的理解和使用mVc。
简介
在webForms中微软为我们提供了gridView控件,而且控件中提供了一种快速简便的方法来显示表格中的
数据集,并提供排序,分页,编辑,删除等一些额外的功能。
我们知道在webForms页面加载时,gridView会自动呈现为一个元素,使我们不必编写任何html标记,只专注于gridView中检索数据和绑定数据。
然而,在mVc 应用程序,开发人员必须手动完成View视图标记,如果开发类似webForms中的gridView表格,是不是感觉有点头痛。
从这篇文章开始,我们就探讨如何在mVc应用程序中显示表格数据。
然后我们逐渐扩张一步一步完成表格中复杂的功能,包括排序,分页,筛选等增强型功能。
废话不多说了,让我们创建一个mVc应用程序,看看如何在一个网页中以表格的形式显示数据库记录。
创建解决方案
新建一个基于mVc3.0框架,名为mVc3.grid的解决方案
1
选择空白解决方案,视图引擎选择Razor引擎,暂时不生成测试框架。
解决方案创建成功
2
创建model
对于model,我们可以选择使用自定义的几条模拟数据,也可以选择数据库作为基础数据。
此时我们选择linqtosql
作为数据模型
鼠标右击model文件夹--添加新项目
新建linqtosql数据模型
点击添加后,我们可以在服务器资源管理器中,新建与数据的连接
提供一下例子中employee和department两张表的设计departmentid是个int型的自动增长列
3
departmentid是外键
拖拽出两张表,此处我们主要以employee和department 两张表作为例子,这两张表以departmentid作为外键连接注意:后面例子中界面上的属性只选取其中几个作为例子。
4
重新生成解决方案,看看我们的项目是否成功。
创建controller
首先,我们为了能将数据重复使用,做一个简单的controller基类,命名为basecontroller
5
篇三:mVc常用控件
mVc常用控件
在mVc框架中没有了自己的控件,页面显示完。