Wijmo 更优美的jQuery UI部件集:客户端更改C1GridView数据源

很多时候,我们在使用 GridView 展示数据时,希望最终用户可以编辑数据并且同步到数据源中。这是一项繁琐的工作。我们需要自定义模板列,并且在后台手动获取更新值,最后使用 SQL 语句同步到数据库中。 

但是,现在我们有了 C1 Wijmo GridView ,这些繁琐的工作都成为历史。C1GridView 仅仅通过一个属性-AllowClientEditing 便允用户在客户端编辑单元格内容。

需要编辑时,我们可以通过双击单元格使其进入编辑状态即可。完成编辑后,选择其它单元格去保存编辑值。 

这篇文章将叙述在不执行任何 PostBack 的情况下,如何轻而易举的更新数据库。 

1.定义数据库连接字符串并且绑定到 C1GridView

C1GridView 可以绑定 Oledb 数据源或 SQL 数据源。本文中,我们将使用 Oledb 数据源。请根据下面的代码设置 DataKeyNames 和 C1GridView 相关列。同时,我们需要设定 CallbackSettings 值为 editing ,这样在我们保存时,不会发生 Postback。

参考代码:

<wijmo:C1GridView ID="C1GridView1" runat="server"

AutogenerateColumns="false" DataKeyNames="CustomerID" ClientSelectionMode="SingleRow"

AllowClientEditing="true" ShowFilter="true"

OnEndRowUpdated="C1GridView1_EndRowUpdated">

<CallbackSettings Action="Editing, Filtering" />

<Columns>

<wijmo:C1BoundField DataField="CustomerID" HeaderText="CustomerID" SortExpression="CustomerID">

</wijmo:C1BoundField>

<wijmo:C1BoundField DataField="CompanyName" HeaderText="Company Name" SortExpression="CompanyName">

</wijmo:C1BoundField>

<wijmo:C1BoundField DataField="ContactName" HeaderText="Contact Name" SortExpression="ContactName">

</wijmo:C1BoundField>

<wijmo:C1BoundField DataField="City" HeaderText="City" SortExpression="City">

</wijmo:C1BoundField>

<wijmo:C1BoundField DataField="Country" HeaderText="Country" SortExpression="Country">

</wijmo:C1BoundField>

</Columns>

</wijmo:C1GridView>

 

2.下面,我们定义 Oledb 数据库连接字符串。因为需要将更改同步到数据库中,所以我们需要写 SQL 语句去同步数据源。

参考代码:

public DataTable GetDataTable()

{

DataTable dt = Page.Session["Customers"] as DataTable;

OleDbConnection con = new OleDbConnection("provider=Microsoft.Jet.Oledb.4.0; Data Source=" + Server.MapPath("~/App_Data/C1NWind.mdb"));

OleDbDataAdapter da = new OleDbDataAdapter();

da.SelectCommand = new OleDbCommand("SELECT * FROM [Customers] Order By [CustomerID]", con);

da.UpdateCommand = new OleDbCommand("Update [Customers] set [CompanyName]=?, [ContactName]=?, [City]=?, [Country]=? where CustomerID = ?", con);

da.UpdateCommand.Parameters.Add("@CompanyName", OleDbType.VarChar, 50, "CompanyName");

da.UpdateCommand.Parameters.Add("@ContactName", OleDbType.VarChar, 50, "ContactName");

da.UpdateCommand.Parameters.Add("@City", OleDbType.VarChar, 50, "City");

da.UpdateCommand.Parameters.Add("@Country", OleDbType.VarChar, 50, "Country");

da.UpdateCommand.Parameters.Add("@CustomerID", OleDbType.VarChar, 50, "CustomerID");

if (dt == null)

{

dt = new DataTable();

da.Fill(dt);

dt.PrimaryKey = new DataColumn[] { dt.Columns["CustomerID"] };

Page.Session["Customers"] = dt;

}

da.Update(dt);

return dt;

}

 

3.我们仅需在 RowUpdating 和 EndRowUpdated 事件中更新被编辑的行。在客户端使用 C1 Wijmo GridView 修改数据源。

protected void C1GridView1_RowUpdating(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewUpdateEventArgs e)

{

DataTable customers = GetDataTable();

DataRow row = customers.Rows.Find(C1GridView1.DataKeys[e.RowIndex].Value);

if (row != null)

{

foreach (DictionaryEntry entry in e.NewValues)

{

row[(string)entry.Key] = entry.Value;

}

}

else

{

throw new RowNotInTableException();

}

Page.Session["Customers"] = customers;

}

 

 在 EndRowUpdated 事件中重新绑定 C1GridView 数据源。

protected void C1GridView1_EndRowUpdated(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewEndRowUpdatedEventArgs e)

{

C1GridView1.DataSource = GetDataTable();

C1GridView1.DataBind();

}

 

不过,有时 C1GridView 中仅仅有一行数据(例如:执行了过滤操作)。用户编辑这一行,但是我们并没有其他行可以点击,从而无法保存更改。不要着急!

我们只需要添加 button 去调用 C1GridView 的前台方法 Update即可。

<asp:Button ID="btn1" runat="server" Text="Update C1GridView"OnClientClick="btn_ClientClick(); return false;" />

 

使用下面代码调用 Update() 方法:

function btn_ClientClick(sender, args)

{

var grid = $("#C1GridView1");

grid.c1gridview("endEdit");

grid.c1gridview("update");

}

 

 

好了,现在我们可以运行程序查看效果了。

Demo 下载:Sample_C1GridView_ClientSideUpdate.zip

Wijmo下载,请进入Studio for ASP.NET Wijmo 2012 v1正式发布(2012.03.22更新)!

时间: 2024-10-02 18:26:39

Wijmo 更优美的jQuery UI部件集:客户端更改C1GridView数据源的相关文章

Wijmo 更优美的jQuery UI部件集:通过jsFiddle测试Wijmo Gauges

Wijmo 的巨大优势之一就是,它们是非常流行的jQuery UI部件.这将意味着它们的基础类库具有很多支持者.具有众多的支持者同时也意味着更多好用的工具.这些好用的工具之一就是很酷的jsFiddle,这是一个实时的HTML/CSS/JavaScript snippet编辑器.用它来以一种迅速的无开销的方式测试一些小东西是相当棒的.事实上,我们可以用它来实时的测试一些wijmo部件,这里我们会看到如何做到这一点.因为Wijmo gauges使用到了基于浏览器能力的SVG或者VML,这些是"无插件

Wijmo 更优美的jQuery UI部件集:发现 Wijmo

内容  1 什么是Wijmo?  2 jQuery 语法  3 jQuery 选择器      3.1 jQuery 元素选择器      3.2 jQuery 属性选择器      3.3 jQuery CSS 选择器  4 文件准备功能  5 jQuery 选项  6 如何引用Wijmo  7 创建你的第一个jQuery 工程   什么是 Wijmo? Wijmo 是一个基于jQuery UI的UI部件的套件.Wijmo 部件对客户端Web开发进行了优化,并且充分利用了jQuery的强大能力

Wijmo 更优美的jQuery UI部件集:爱上 ThemeRoller

Wijmo 是一个基于jQuery UI的UI部件的套件.Wijmo最方便使用的特点之一就是兼容ThemeRoller.ThemeRoller 是一个创建独特的jQuery UI web 部件主题皮肤的web应用程序.凭借其简单的界面和所见即所得的预览功能,你可以用比使用图形编辑器更短的时间为你的Wijmo部件以及其他兼容ThemeRoller的部件创建皮肤.   拉开帷幕:ThemeRoller 基础 我们可以在这里找到ThemeRoller Web 应用程序 jqueryui.com/the

Wijmo 更优美的jQuery UI部件集:活动日历控件(Event Calendar)

Wijmo Event Calendar活动日历控件,是一个功能齐全的活动日历控件,允许用户添加,编辑和管理他们的日程.默认情况下,控件将使用Html5的Local Storage特性,进行离线数据存储,用户可以在不连接网路的情况下,使用网页来管理自己的日程,无需额外的配置. Wijmo Event Calendar支持用户自定义数据存储方式.Wijmo Event Calendar 控件在设计之初就将数据展现和数据存储进行分离,您可以使用amplify.store库,实现本地数据存储.然后设置

Wijmo 更优美的jQuery UI部件集:复合图表(CompositeChart)

Wijmo的CompositeChart控件允许您使用一个Chart来分析和展现复杂的数据.相同的数据可以使用不同的可视化效果,不同的图表类型展现在一个图表内,使得用户可以从不同的角度,了解分析这组数据所表达的内容 . 本文将介绍如何使用Wijmo的CompositeChart控件,制作一个复合图表.CompositeChart 的API:http://wijmo.com/wiki/index.php/Compositechart,Wijmo 的CompositeChart 化繁为简,将传统 E

Wijmo 更优美的jQuery UI部件集:在安全站点使用Wijmo控件

通常我们总会遇到这样的问题,在安全站点(HTTPS)中使用C1Wijmo控件时,用户可能会收到脚本错误. 发生这种状况的是由于我们的CDN链接不是https链接.   解决HTTPS 的错误 为了解决上述脚本问题,你需要使用本地的脚本文件,而不是使用网上CDN的链接.你可以使用以下解决方案之一: 解决方案1. 在设计视图下,取消选中C1Wijmo控件的SmartTag上的 "UseCDN"选项. 解决方案2. 你可以在网站配置文件中,明确地将该选项设置为false: <appSe

Wijmo 更优美的jQuery UI部件集:导出Wijmo的GridView到Excel

Wijmo GridView 控件不提供导出Excel文件的方法.本篇博客介绍一种将Wijmo的GridView控件保存到Excel的简单方法.你可以使用同样的方法在C1 WebUI GridView上.   步骤1 : 将C1GridView绑定至数据源 第一步是将C1GridView绑定到数据源.为了简单起见,我们将其绑定到C1Nwind.mdb的Customers表.   步骤2 : 导出C1GridView 至Excel 导出到Excel需要分成两步.第一步是将GridView保存至一个

Wijmo 更优美的jQuery UI部件集:服务器端Grid魔法

在之前的一篇文章中,我们讨论了如何添加一大堆的超赞的功能到一个标准的HTML表,并把它转换成一个"grid"表格.今天我想要做的事情是向你展示如何将这些功能转到服务器. 通过使用服务器做大量的"苦力活儿",我们可以向我们的最终用户提供更加平顺的用户体验.什么苦力活要交给服务器呢?假设你有一百万行的数据集,这些数据要是发送到客户端,然后再进行排序/分页/过滤,那会是相当可观的一堆流量.但是如果我们要求服务器在发送数据到客户端之前执行排序/分页/过滤,我们可以迅速的减少

Wijmo 更优美的jQuery UI部件集:C1 Wijmo Grids 更多惊喜

本文中,我将给大家介绍一系列非常棒的 Wijmo Grids功能.我们先以一个新的Wijmo Grids 来开始我们这次的 Wijmo Grids 之旅吧.     <BR> <table id="tableDepartmentInformation"><BR> <thead><BR> <tr><BR> <th>First Name<BR> </th><BR&g