首页 > 代码库 > C# .net中DatailsView的JS简易版
C# .net中DatailsView的JS简易版
话不多说,先看效果图
此图为最基本的效果,传入DataTable,直接读取第一条数据
设置了标题
设置了显示的列
针对需要处理的列,增加了回调函数控制,让用户自己写处理事件
将指定的列显示为图片
一下两个图为为列绑定了单击事件的回调,将列名以及列值返回
贴上代码,各位高手,提点意见
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CameraFaultInfo.aspx.cs" Inherits="ChildrenPageFolder_Video_Page_CameraFaultInfo" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <base target="_self" /> <title>故障详情</title> <script src="../../js/MyCreateJS/JS_DetailsView.js" type="text/javascript"></script> <script language="javascript" type="text/javascript"> function LoadInfo() { // 获取后台数据,DataTable类型 var dt = ChildrenPageFolder_Video_Page_CameraFaultInfo.LoadCameraFaultInfomation(document.getElementById("hf_cf_id").value).value; if (dt != null) { // 显示标题 DatailsView.Opration.TableTitle = "这里是标题勒"; // 显示哪些字段,每个字段对应的中文名 DatailsView.Opration.Fields = "CF_ID:ID:;CF_CAMERAID:视频名称:;CF_TYPE:故障类型:;CF_REMARK:备注:;CF_IMAGENAME:图片名称:;CF_CREATEUSERNAME:创建者:;CF_CREATEUSERID:创建者ID:;CF_CREATETIME:创建时间:;CF_STATE:处理状态:;CF_IMAGEPATH:图片地址:"; // 设置需要在加载时二次编辑的字段 DatailsView.Opration.SetEditColumnWhenLoad("CF_STATE,CF_CAMERAID", DicEdit); // 设置需要显示为图片的字段 DatailsView.Opration.SetImageColumnWhenLoad("CF_IMAGEPATH"); // 设置需要点击触发的字段,并设置回调函数 DatailsView.Opration.SetColumnWhenClick("CF_IMAGEPATH,CF_CREATETIME", ClickCallback); // 加载数据详情 DatailsView.Opration.LoadData("div_CameraFaultInfo", dt); } else { alert("视频故障信息有误,请重新链接该页面。"); } } function DicEdit(colName, colValue) { switch (colName) { case "CF_STATE": return colValue == 1 ? "已处理" : "未处理"; break; case "CF_CAMERAID": return colValue; break; } } function ClickCallback(colName, colValue) { alert(colName + ":" + colValue); } </script></head><body onload="LoadInfo()"> <form id="form1" runat="server"> <asp:HiddenField ID="hf_cf_id" runat="server" Value="" /> <div id="div_CameraFaultInfo"> </div> </form></body></html>
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;public partial class ChildrenPageFolder_Video_Page_CameraFaultInfo : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { AjaxPro.Utility.RegisterTypeForAjax(typeof(ChildrenPageFolder_Video_Page_CameraFaultInfo)); string cf_id = Request.QueryString["cf_id"] != null ? Request.QueryString[""].ToString() : ""; this.hf_cf_id.Value = http://www.mamicode.com/"4a14c6001a03458e980c04de393d8d59"; } /// <summary> /// 加载视频故障详情 /// </summary> /// <param name="cf_id"></param> [AjaxPro.AjaxMethod] public DataTable LoadCameraFaultInfomation(string cf_id) { string sql = "select * from camera_fault t where t.cf_id = ‘" + cf_id + "‘"; return DataAccessManager.GetDataTable(sql, "PGISAPP"); }}
/**基本信息说明author <Jeevan>email <jia.wang_vip@foxmail.com>date 2014年7月30日17:04:40**/var DatailsView = {};DatailsView.Opration = (function () { /// <summary> /// 1 /// </summary> var LoadDatails = { // 表格的样式 css_Table: "font-size: 14px; width:450px;", css_td_Title: "text-align: center; font-size:20px;font-weight:bold;", css_TR1: "color: #000000;background-color: #ffffee;", css_TR2: "color: #993300;background-color: #ffffaa;", css_TRmove: "color: #123456;background-color: #eaa;", css_colTitle: "width:100px; text-align:right;", css_colValue: "width:350px;", // 设置需要初始化的变量 TableTitle: "", // 显示的标题 SetTableTile: function (title) { /// <summary> /// 设置显示的标题 /// </summary> /// <param name="title" type="String">标题的名称</param> this.TableTitle = title; }, Fields: "", SetFields: function (fields) { /// <summary> /// 需要显示的字段,表列名 /// </summary> /// <param name="fields" type="String">格式:列名:中文名;列名:中文名;列名:中文名</param> }, // 二次编辑字段 EditColumn: "", EditColumnCallBack: null, SetEditColumnWhenLoad: function (columns, callback) { /// <summary> /// 设置需要二次处理的字段,如数据为1,但需要显示为已处理,该方法完成 /// 返回该列名、值给回调方法 /// </summary> /// <param name="columns" type="String">列名:格式 列名1,列名2</param> /// <param name="callback" type="function">回调的处理方法</param> this.EditColumn = columns; this.EditColumnCallBack = callback; }, // 设置需要显示为图片的链接 ImageColumn: "", SetImageColumnWhenLoad: function (columns) { /// <summary> /// 设置需要显示为图片的字段,该字段无处理过程,直接给图片赋值显示 /// </summary> /// <param name="columns" type="String">格式:列名,列名,列名</param> this.ImageColumn = columns; }, // 设置当点击的时候,需要回调的字段 ClickColumn: "", ClickColumnWhenClick: null, SetColumnWhenClick: function (columns, callback) { /// <summary> /// 设置点击时需要触发事件的字段(会在回调函数里面返回该字段的列名以及值) /// </summary> /// <param name="columns" type="String">点击时触发的字段,格式:列名,列名,列名</param> /// <param name="callback" type="function">点击的回调方法,会在该函数里面返回该字段的列名以及值</param> this.ClickColumn = columns; this.ClickColumnWhenClick = callback; }, LoadData: function (divId, dt) { /// <summary> /// 通过传入DIV的ID以及DataTable类型数据进行数据加载 /// </summary> /// <param name="divId" type="String">DIV的ID</param> /// <param name="dt" type="DataTable">C#中DataTable类型</param> if (dt != null && dt != undefined && dt.Rows.length > 0) { // 准备好显示的字段跟对应的字段绑定的值 var cn_col = new Array(); var en_col = new Array(); if (this.Fields.split(";").length > 0 && this.Fields != "") { var temArr = this.Fields.split(";"); for (var i = 0; i < temArr.length; i++) { en_col.push(temArr[i].split(":")[0]); cn_col.push(temArr[i].split(":")[1]); } } else { for (var i = 0; i < dt.Columns.length; i++) { en_col.push(dt.Columns[i].Name); } cn_col = en_col; } // 显示标题 var thead = null; if (this.TableTitle != "") { thead = document.createElement("thead"); var tr = document.createElement("tr"); var td = document.createElement("td"); td.colSpan = "2"; td.style.cssText = this.css_td_Title; td.innerHTML = this.TableTitle; tr.appendChild(td); thead.appendChild(tr); } // 读取数据来显示 var tbody = document.createElement("tbody"); for (var i = 0; i < en_col.length; i++) { // 取出标题跟对应的值 var columnName = en_col[i]; var title = cn_col[i]; var value = http://www.mamicode.com/dt.Rows[0][columnName]; // 创建td对象 var tdTitle = document.createElement("td"); tdTitle.innerHTML = title; tdTitle.style.cssText = this.css_colTitle; var tdValue = http://www.mamicode.com/document.createElement("td"); var tdContentObject = null; if (this.EditColumn.indexOf(columnName) > -1) { // 如果正在执行的字段为需要二次编辑的字段,则通过回调给客户进行二次编辑 var span = document.createElement("span"); span.innerHTML = this.EditColumnCallBack(en_col[i], value); tdContentObject = span; } if (this.ImageColumn.indexOf(columnName) > -1) { // 判断该字段是否需要显示为图片 if (value != null) { var imageObj = document.createElement("image"); imageObj.src = value; imageObj.width = 100; imageObj.height = 100; tdContentObject = imageObj; } } if (this.ClickColumn.indexOf(columnName) > -1) { // 判断该字段是否需要点击事件 if (tdContentObject == null) { var span = document.createElement("span"); span.innerHTML = value; tdContentObject = span; } tdContentObject.setAttribute("colName", columnName); tdContentObject.setAttribute("colValue", value); tdContentObject.onclick = function () { ColumnClickEvent(this); } } if (tdContentObject == null) { var span = document.createElement("span"); span.innerHTML = value; tdContentObject = span; } tdValue.appendChild(tdContentObject); tdValue.style.cssText = this.css_colValue; tdValue.style.wordBreak = "break-all"; // 创建行 var tr = document.createElement("tr"); if (i % 2 == 1) { tr.style.cssText = this.css_TR1; } else { tr.style.cssText = this.css_TR2; } tr.setAttribute("trNowClass", tr.style.cssText); tr.onmouseover = function () { this.style.cssText = DatailsView.Opration.css_TRmove; } tr.onmouseout = function () { this.style.cssText = this.getAttribute("trNowClass"); } // td添加到tr,tr添加到tbody tr.appendChild(tdTitle); tr.appendChild(tdValue); tbody.appendChild(tr); } var table = document.createElement("table"); table.style.cssText = this.css_Table; if (thead != null) { table.appendChild(thead); } table.appendChild(tbody); document.getElementById(divId).appendChild(table); } } }; function ColumnClickEvent(obj) { /// <summary> /// 点击事件的回发 /// </summary> /// <param name="obj" type="Object">返回的td中的对象</param> DatailsView.Opration.ClickColumnWhenClick(obj.getAttribute("colName"), obj.getAttribute("colValue")) } function trMouseEvent(trObj) { /// <summary> /// 行悬浮事件 /// </summary> /// <param name="trObj" type="Object">tr对象</param> trObj.style.cssText = CommonJS.HtmlTableOperation.trMouseCss; } function trOutEvent(trObj) { /// <summary> /// 行离开事件 /// </summary> /// <param name="trObj" type="Object">tr对象</param> trObj.style.cssText = trObj.getAttribute("trNowClass"); } return LoadDatails;})();
简单的汇总一下功能:
1.读取DataTable第一列的值,并显示
2.自定义设置标题
3.自定义绑定列
4.自定义列的数据处理加载的处理事件
5.自定义列为图片显示
6.自定义列的点击事件
7.行的样式自定义
JS代码中,每个方法里面我都写了
/// <summary> /// 设置点击时需要触发事件的字段(会在回调函数里面返回该字段的列名以及值) /// </summary> /// <param name="columns" type="String">点击时触发的字段,格式:列名,列名,列名</param> /// <param name="callback" type="function">点击的回调方法,会在该函数里面返回该字段的列名以及值</param>
该功能的主要作用是在客户调用的时候,增加的提示的功能,JS智能提示
http://visualstudiogallery.msdn.microsoft.com/872d27ee-38c7-4a97-98dc-0d8a431cc2ed/
有空大伙可以看看,写的时候麻烦了点,但是调用的时候就方便多了
如果转载,请添加转载说明,本人为自创,谢谢!
http://www.cnblogs.com/loushuibazi/
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。