DataView数据组件

Obsidian 插件篇 -Dataview 插件的基础语法 本篇文章主要梳理介绍一下 Dataview 插件的基础语法。 阅读详情

DataView组件可以在DataSet中实现对数据的过滤和分类。下面是DataView对象常用的属性及方法:

属性
Count在应用RowFilter和RowStateFilter之后,获取DataView中记录的数量
Item从指定的表获取一行数据
RowFilter获取或设置用于筛选在DataView中查看哪些行的条件表达式
RowStateFilter获取或设置用于DataView中的行状态筛选器
Sort获取或设置DataView的一个或多个排序列以及排序顺序
Table获取或设置源DataTable
方法
AddNew将新行添加到DataView
Delete删除指定索引位置的行
Find按指定的排序关键字值在DataView中查找行
FindRows返回DataRowView对象的数组

DataTable的原始输出格式可以通过DefaultView属性来取得,DefaultView属性本身就是DataView对象;我们可以设定DefaultView的属性来指定DataTable的显示格式。

1.用DataView.Sort属性来排序

例子所使用的数据库名为sango,表为people,部分数据如下图:

示例1:

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.SqlClient" %>

<html>

<body>

<Script language="C#" runat="server">

public 
void Page_Load(Object sender,EventArgs e)
{
   string strConn 
= "server=localhost;database=sango;uid=sa;pwd=;";
   string strCmd 
= "SELECT * FROM people";
   DataSet ds 
= new DataSet();
   SqlDataAdapter cmd 
= new SqlDataAdapter(strCmd,strConn);
   cmd.Fill(ds,
"tempTable");
   DataTable dt 
= ds.Tables["tempTable"];
   
   Response.Write(
"<font color=red>未排序:</font><br>");
   
//循环读取数据 
   for(int i=0;i<dt.Rows.Count;i++)
   {
     Response.Write(dt.DefaultView[i]["姓名"]+"<br>");

   }
   
   Response.Write(
"<hr noshade><font color=red>排序后:</font><br>");
   
//按照姓名(读音首字母顺序)的升序排列
   dt.DefaultView.Sort = "姓名 ASC";
   
for(int i=0;i<dt.Rows.Count;i++)
   {
     Response.Write(dt.DefaultView[i][
"姓名"]+"<br>");
   }  
}

</script>

</body>

</html>

2.用DataView.RowFilter属性来筛选数据

DataView.RowFilter属性可以利用比较运算符 =、<、>、<=、>=以及Like来过滤记录中的数据。其实该属性需要的值就是一个Where子句

示例2:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script language="C#" runat="server">

public void Page_Load(Object sender,EventArgs e)
{
   
string strConn = "server=.;database=sango;uid=sa;pwd=";
   SqlConnection conn 
= new SqlConnection(strConn);
   DataSet ds 
= new DataSet();
   
string strCmd = "SELECT * FROM people"; 
   SqlDataAdapter sda 
= new SqlDataAdapter(strCmd,conn);
   sda.Fill(ds,
"tempTable");
   
   DataTable dt 
= ds.Tables["tempTable"];
   
//循环得到原始数据
   Response.Write("<font color=red>原始数据:</font><br>"); 
   for(int i=0;i<dt.Rows.Count;i++)
   {
      Response.Write(dt.DefaultView[i][
"姓名"]+"<br>");
   }

    
//对数据进行筛选
   dt.DefaultView.RowFilter = "阵营='魏国' and 士兵>9000";
   
   Response.Write(
"<font color=red>筛选后的数据:</font><br>");
   for(int i=0;i<dt.Rows.Count;i++)
   {
      Response.Write(dt.DefaultView[i][
"姓名"]+"<br>");
   }
  
}

</script>

3.用DataView.RowStateFilter属性得到操作后的数据

DataView.RowStateFilter所需要的值是DataViewState枚举值中的一个,DataViewRowState所包含的状态值如下表所示:

成员名称说明
Added新添加的行
CurrentRows包括未更改行、新行和已修改行的当前行
Deleted已删除的行
ModifiedCurrent被修改后的记录
ModifiedOriginal被修改前的记录
None无
OriginalRows包括未被修改以及删除掉的原始记录
Unchanged未更改的行

示例3:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script language="c#" runat="server">
public 
void Page_Load(Object sender,EventArgs e)
{
    string strConn 
= "server=.;database=sango;uid=sa;pwd=";
    string strCmd 
= "SELECT * FROM people";
    DataSet ds 
= new DataSet();
    SqlDataAdapter sda 
= new SqlDataAdapter(strCmd,strConn);
    sda.Fill(ds,
"tempTable");
    
    
//用Session在各函数之间传递原始表
    Session["myTable"] = ds.Tables["tempTable"];
    
    Response.Write(
"<font color=red>新添加的记录是:</font><hr noshade>");
    
this.Show_Added();
    Response.Write(
"<p><font color=red>被删除的记录是:</font><hr noshade>");
    
this.Show_Deleted();
    Response.Write(
"<p><font color=red>修改后的记录是:</font><hr noshade>");
    
this.Show_ModifiedCurrent();
    Response.Write(
"<p><font color=red>修改前的记录是:</font><hr noshade>");
    
this.Show_ModifiedOriginal();
    Response.Write(
"<p><font color=red>尚未被更改的记录是:</font><hr noshade>");
    
this.Show_Unchanged();
    Response.Write(
"<p><font color=red>现在存在的记录是:</font><hr noshade>");
    
this.Show_CurrentRows();
    Response.Write(
"<p><font color=red>原始记录是:</font><hr noshade>");
    
this.Show_OriginalRows();
}

private 
void Show_Added()
{
    DataTable dt 
= (DataTable)Session["myTable"];
    
//DataTable有一个方法NewRow()来创建一个新记录对象,然后再分别赋值
    DataRow newRecord1 = dt.NewRow();
    DataRow newRecord2 
= dt.NewRow();
    newRecord1[
"姓名"] = "颜良";
    newRecord1[
"阵营"] = "袁绍军";
    newRecord2[
"姓名"] = "文丑";
    newRecord2[
"阵营"] = "袁绍军";
    
//用DataTable.Rows.Add()方法添加数据
    dt.Rows.Add(newRecord1);
    dt.Rows.Add(newRecord2);
    
//设置状态为Added,并打印新添加的这两条数据
    dt.DefaultView.RowStateFilter = DataViewRowState.Added;
    
for(int i=0;i<dt.DefaultView.Count;i++)
    {
        Response.Write(dt.DefaultView[i][
"姓名"]+"--"+dt.DefaultView[i]["阵营"]+"<br>");
    }
}

private 
void Show_Deleted()
{
    DataTable dt 
= (DataTable)Session["myTable"];
    
//从DataTable中删除数据,用DataTable.Select(string)方法创建一个DataRow数组,然后在循环中调用DataRow.Delete()来删除
    string expression = "阵营='蜀国' and 性别='女'";
    DataRow[] tempRow 
= dt.Select(expression);
    
for(int i=0;i<tempRow.Length;i++)
    {
        tempRow[i].Delete();
    }
    
//状态设置为Deleted,并打印被删除的数据
    dt.DefaultView.RowStateFilter = DataViewRowState.Deleted;
    
for(int i=0;i<dt.DefaultView.Count;i++)
    {
        Response.Write(dt.DefaultView[i][
"姓名"]+"--"+dt.DefaultView[i]["阵营"]+"<br>");
    }
}

private 
void Show_ModifiedCurrent()
{
    DataTable dt 
= (DataTable)Session["myTable"];
    
//得到需要修改的记录行
    string expression = "阵营='魏国' and 士兵<=10000";
    DataRow[] tempRow 
= dt.Select(expression);
    
for(int i=0;i<tempRow.Length;i++)
    {
        
//将每个带兵数小于9000的武将各加上1000
        tempRow[i]["士兵"] = (int)tempRow[i]["士兵"] + 1000;
    }
    
//状态设置为ModifiedCurrent,并打印修改后的记录
    dt.DefaultView.RowStateFilter = DataViewRowState.ModifiedCurrent;
    
for(int i=0;i<dt.DefaultView.Count;i++)
    {
        Response.Write(dt.DefaultView[i][
"姓名"]+"--"+dt.DefaultView[i]["士兵"]+"<br>");
    }
}

private 
void Show_ModifiedOriginal()
{
    
//这个函数得到相对于ModifiedCurrent修改前的记录
    DataTable dt = (DataTable)Session["myTable"];
    
//状态设置为ModifiedOriginal,并打印修改前的记录
    dt.DefaultView.RowStateFilter = DataViewRowState.ModifiedOriginal;
    
for(int i=0;i<dt.DefaultView.Count;i++)
    {
        Response.Write(dt.DefaultView[i][
"姓名"]+"--"+dt.DefaultView[i]["士兵"]+"<br>");
    }
}

private 
void Show_Unchanged()
{
    DataTable dt 
= (DataTable)Session["myTable"];
    
//得到所有列名,注意这里不能像DataRow那样直接创建数组,而是要使用DataColumnCollection集合来获取数组
    DataColumnCollection cols = dt.Columns;
    
//状态设置为Unchanged,并打印未修改的记录
    dt.DefaultView.RowStateFilter = DataViewRowState.Unchanged;
    
for(int i=0;i<dt.DefaultView.Count;i++)
    {
        foreach(DataColumn col 
in cols)
        {
            Response.Write(dt.DefaultView[i][col.ColumnName]
+"   ");
        }
        Response.Write(
"<p>");
    }
}

private 
void Show_CurrentRows()
{
    DataTable dt 
= (DataTable)Session["myTable"];
    DataColumnCollection cols 
= dt.Columns;
    
//状态设置为CurrentRows,并打印当前存在的记录
    dt.DefaultView.RowStateFilter = DataViewRowState.CurrentRows;
    
for(int i=0;i<dt.DefaultView.Count;i++)
    {
        foreach(DataColumn col 
in cols)
        {
            Response.Write(dt.DefaultView[i][col.ColumnName]
+"  ");
        }
        Response.Write(
"<p>");
    }
}

private 
void Show_OriginalRows()
{
    DataTable dt 
= (DataTable)Session["myTable"];
    DataColumnCollection cols 
= dt.Columns;
    
//状态设置为OriginalRows,并打印原始记录
    dt.DefaultView.RowStateFilter = DataViewRowState.OriginalRows;
    
for(int i=0;i<dt.DefaultView.Count;i++)
    {
        foreach(DataColumn col 
in cols)
        {
            Response.Write(dt.DefaultView[i][col.ColumnName]
+"  ");
        }
        Response.Write(
"<p>");
    }
}

</script>
vue - datav 大屏展示组件库 主要用于构建大屏数据展示的页面,具有多种类型组件可供使用。 阅读详情

相关推荐

@jiaminghi/data-view(大屏数据可视化开源组件)

@jiaminghi/data-view 是什么? @jiaminghi/data-view 是基于 Vue 的编写的,它主要是用于构建 大屏数据展示页面的开发组件。如下截图: 更多介绍参见官网:http://datav.jiaminghi.com/guide/ 怎么使用@jiaminghi/data-view ? 1、通过 npm 安装@jiaminghi/data-view npm install @jiaminghi/data-view 2、在 main.js 文件中全局引入 ...

郭宝的博客 3万+

Vue第 34 篇,DataV是什么,jiaminghi/data-view是什么,如何在Vue中使用jiaminghi/data-view(如何在Vue中使用DataV)

⭐相信大家在平时工作中,难免会遇到开发大屏的需求,页面中有很多比较炫酷的CSS效果。这里给大家推荐一款大屏数据展示组件库,里面有各种边框、装饰、图标、飞线图、水位图、轮播表等等,支持vue和react,有很多炫酷效果。 DataV 是阿里云推出的数据可视化工具,是阿里云的数据可视化应用搭建平台,‌旨在让更多的人看到数据可视化的魅力,‌帮助非专业的工程师通过图形化的界面轻松搭建专业水准的可视化应用,‌满足会议展览、‌业务监控、‌风险预警、‌地理信息分析等多种业务的展示需求。‌主要用于创建大屏展示、仪表盘和数据

AI Agent 全栈架构师(AI + GIS + Backend)& 数字芯片系统架构师(FPGA),NorthCity Smile的博客(NcSmile,博主域名:https://ncmile.blog.youkuaiyun.com) 2万+

dataview组件

dataview组件的学习,是sencha touch2的组件

第8章 DataView组件_8.1DataView组件的基本功能

ST2.0中的DatView组件功能非常强,能够使用XTemplate模板来显示组件中的内容,同时与数据仓库进行绑定,当数据仓库的内容发生任何变化时,模板中的内容也会立即更新与显示出来。该组件中可以显示列表、图像等其他组件或元素,当对书库仓库进行频繁更新时,使用DataView组件会变得非常方便。DataView组件的另一个优势是,因为使用Xtemplate模板直接生成HTML代码片段,在HTML

李战磊专栏 2757

银河麒麟系统V10 Server SP1 安装Oracle 19c

•oracle-database-preinstall-19c 这个工具会自动配置系统参数,创建 oracle 用户和组。比较方便。•••••银河麒麟高级服务器操作系统V10 - 国产操作系统、银河麒麟、中标麒麟、开放麒麟、星光麒麟——麒麟软件官方网站。

fuguimashu的博客 4323

用于多种无人机协作的群体智能算法:综合综述

随着无人机技术的快速高水平发展,将多架无人机作为自主控制的编队应用于复杂情况是一个新兴领域的代表之一。在实现自主控制的挑战中,碰撞避免、任务分配、路径规划和编队重构是关键功能。本文对各种经典的无人机群智能算法进行了系统的总结和分析。

erjia_的博客 1万+

DataTable,DataView,DataGrid,数据组件,数据访问

  DataTable,DataView,DataGrid,数据组件,数据访问  一、DataTable     DataTable表示内存中数据的一个表,它完全是在内存中的一个独立存在,包含了这张表的全部信息。DataTable可以是从通过连接从数据库中读取出来形成的一个表,一旦将内容读到DataTable中,此DataTable就可以跟数据源断开而独立存在;也可以是完全由程

lfking007的专栏 1079

CAPL 中的变量类型详解与应用

CAPL 中的变量类型详解与应用

qq_42268594的博客 1448

DataView数据组件 (转)

DataView组件可以在DataSet中实现对数据的过滤和分类。下面是DataView对象常用的属性及方法: 属性 Count 在应用RowFilter和RowStateFilter之后,获取DataView中记录的数量 ...

weixin_33805557的博客 230

基于YOLOv10深度学习的花生种子霉变检测系统

YOLO(You Only Look Once)是当前最先进的目标检测算法之一,具有快速、精准的特性。YOLOv10是YOLO系列的最新版本,相较于之前的版本,YOLOv10在特征提取、模型精度和速度上都有了显著的提升。YOLOv10采用了更深的卷积神经网络、更多的跨层特征融合方法,使得其在不同尺寸物体的检测和复杂场景的处理上都表现出了优异的性能。YOLOv10特别适合应用在需要快速处理并检测大量图像的任务中,如花生种子霉变检测等,能够实现精准、高效的检测。

2201_76125393的博客 649

STM32F103RCT6的FLASH读写操作

STM32F103RCT6是一款常用的32位微控制器,它具有内置的FLASH存储器,可以用于存储程序代码和数据。在本文中,我们将详细介绍如何进行STM32F103RCT6的FLASH读写操作,并提供相应的源代码。写入数据时,我们通过将数据直接写入FLASH地址来完成。通过使用适当的API和规则,我们可以有效地读取和写入数据。写入FLASH时,我们需要按特定的规则进行编程。首先,我们需要包含适当的头文件和定义相关的宏和变量,以便在代码中使用FLASH API。类型的指针,我们可以直接读取FLASH中的数据。

UplKubernetes的博客 1034

Sencha-组件-DataView(数据视图)(官网文档翻译16)

Sencha-组件-DataView(数据视图)(官网文档翻译16) DataView中很容易地创建动态大量的组件,通常是根据掀起了商店。这是伟大的渲染从您的服务器的后端或任何其他数据源的数据是权力成分像Ext.List。 使用DataView的,只要你想秀台多次相同的组件,这样在应用程序的例子: 消息列表中的电子邮件应用程序 显示最...

weixin_33816821的博客 506

【Mode】多模干涉仪的设计 Multi-mode interferometer(MMI)

与 Splitter 器件一样,MMI 器件也是一种常见的分光器件,可以根据用户的需求将光束分成不同的比例。本文,我们将介绍如何仿真 MMI 器件。这里我们使用的是 1x2 MMI,其本质上是由四个部分组成的,中间的矩形多模式干涉区域以及左右两侧的三个 taper 模式转换区域。之前的教程中我们也提及了,为了获取稳定的模式场分布,通常,我们需要进行模式收敛性扫描。这里以官网给出的案例为例。如何提取 S 参数我们先暂时不做介绍,后续有时间了我们再做介绍。

u011699626的博客 1214

使用dataview组件显示服务器端xml文件数据

来自《sencha touch权威指南》,约193页开始 ------------------------------------- (1)app.js代码: Ext.require(['Ext.data.Store','Ext.data.reader.Xml','Ext.dataview.DataView']); Ext.application({ name: '...

aishi0821的专栏 176

GEE数据融合——Landsat (collection 2,level 2 )4、5、7、8、9长时间序列影像数据融合和视频导出分析

长时间序列影像数据融合是指将Landsat影像数据集合2级2(Level 2)中的4、5、7、8和9这五个卫星的数据进行融合。具体来说,这包括将同一地点的多个卫星影像数据进行处理和整合,以产生一个单一的、具有更高质量的影像产品。在长时间序列影像数据融合中,首先需要对不同卫星的影像数据进行校正,以消除不同卫星之间的光谱差异、辐射度问题和几何纠正误差等。然后,通过使用融合算法,将多个卫星的影像数据进行组合,以生成一张全新的、高质量的合成影像。

此星光明博客 1735

【系统架构设计师-2026上半年真题】综合知识-参考答案及详解(75题完全回忆版)

【系统架构设计师-2026上半年真题】综合知识-参考答案及详解(75题完全回忆版)

数据知道的博客 3105

sencha touch笔记(5)——DataView组件(1)

1.DataView组件可以显示列表,图像等等的组件或者元素,特别适用于数据仓库频繁更新的情况。比如像显示新闻或者微博等等的很多相同样式的组件的列表这种一次性从后台或者数据源拿取很多数据展示的样式。比如官网给的简单的示例: var touchTeam = Ext.create('Ext.DataView', { fullscreen: true, store: {

技术分享 2173

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

dataview的使用

/*! * Ext JS Library 3.3.1 * Copyright(c) 2006-2010 Sencha Inc. * licensing@sencha.com * http://www.sencha.com/license */Ext.onReady(function(){    var xd = Ext.data;    var store = new Ext.data.JsonStore({        url: 'get-images.php',        root: 'image

WarcraftJimmy的专栏 7179

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

DataTable,DataView和DataGrid中一些容易混淆的概念

 关键字   DataTable,DataView,DataGrid,数据组件,数据访问   一、DataTable     DataTable表示内存中数据的一个表,它完全是在内存中的一个独立存在,包含了这张表的全部信息。DataTable可以是从通过连接从数据库中读取出来形成的一个表,一旦将内容读到DataTable中,此DataTable就可以跟数据源断开而独立存在;也可

Alinker 813

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

从DataView中生成Excel报表的方案(C#)

正文: 一、首先要引用一个Excel的组件,我一开始是在Office XP下尝试的,不 成功,后来把XP给干掉,装2k,就成功了,所以这里分享的是Office 2k下 引用相关组件来实现功能的,在工程中引用COM标签中的Microsoft Excel 9.0 Object Library,添加成功后,引用中会多出三个引用项: Excel、Office、VBIDE。 二、具体代码。 usi...

aome1470的博客 207

DataView数据视图的使用 winform

DataView数据视图的使用 winform 实例化一个DataView对象 从Dv对象中过滤数据

pyhui的技术博客 769
上一篇: 详探TextRange对象--用execCommand()执行命令
下一篇: 花点时间搞清top、postop、scrolltop、scrollHeight、offsetHeight
wayne23
博客等级 码龄21年 18粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值