您的位置:首页 > 其它

发布一个原创的基于Ajax的通用(组合)查询

2005-12-17 09:37 681 查看
简单介绍:
1.完全无刷实现,客户端主要实现生成条件选择或录入控件,并进行录入控制;

2.将字段信息存放于XML文件,便于数据移植

3.通过js脚本,ajax框架引擎获取字段信息

4.通过js脚本生成组合条件;

5.运行效果:using System;
using System.Xml;
using System.Data;
using System.Data.SqlClient;

namespace WebUI.AjaxSearchSystem

2.AjaxSearchDataCollection.xml

<?xml version="1.0" encoding="utf-8" ?>
<Fields>
<Table Name="产品表" value="employee">
<Field Name="雇佣号" Value="emp_id" DataType="char">
</Field>
<Field Name="名字" Value="fname" DataType="char">
<Enum SqlSyntax="" TextField="" ValueField=""></Enum>
</Field>
<Field Name="工作号" Value="job_id" DataType="int">
<Enum SqlSyntax="SELECT job_id,job_desc FROM jobs" TextField="job_desc" ValueField="job_id"></Enum>
</Field>
<Field Name="工作**" Value="job_lvl" DataType="int">
</Field>
<Field Name="雇佣日期" Value="hire_date" DataType="datetime">
</Field>
</Table>
</Fields>
继续阅读

3.AjaxSearchClientScript.js

var tbPanel = null; //用于展示组合条件的表控件
var tableName = null; //记录查询的表
var fieldsInfo = null; //保存从服务端取得的对应表的字段信息
var no = 0; //为防止出现重复id保存的计数器
//添加条件编辑行

function addTerm(tbPanelId)

//取得并设置运算符
function getOpts(row)

//设置值录入控件,取得可能存在的枚举值

function getInput(row)

//删除当前行

function DelRow(row)

//新增行

function addRow(row)

//得到组合条件
function getCombinTerm()

//
var oldValue = "";
var MONEY_FLAG = "";
var THOUSAND_FLAG = ",";

function controlNumberKeyPress(textbox)

//
function controlMoneyKeyPress(textbox)

//控制金额录入keyUp事件
function controlNumberOnKeyUp(textbox)

//控制金额录入keyUp事件
function controlMoneyOnKeyUp(textbox, intBit , dotBit)

//添加千分位号
function addThousandFlag(val)

//判断是否是数字

function isNumber(param)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>查询条件</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<base target="_self">
<LINK href="BasicStyle.css" type="text/css" rel="stylesheet">
<script language="javascript" src="Calendar.js"></script>
</HEAD>
<body onload="javascript:addTerm('tbPanel');" MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" style="Z-INDEX: 101; LEFT: 0px; POSITION: absolute; TOP: 0px" cellSpacing="0"
cellPadding="0" width="100%" border="0">
<TR>
<TD style="HEIGHT: 23px" align="center"><asp:button id="btnOK" runat="server" CssClass="redButtonCss" Text="确定"></asp:button><INPUT class="redButtonCss" type="button" value="取消" onclick="javascript:window.close();">
</TD>
</TR>
<TR>
<TD align="center">
<TABLE id="tbPanel" cellSpacing="0" borderColorDark="aliceblue" cellPadding="0" border="1">
</TABLE>
</TD>
</TR>
<TR>
<TD align="center"></TD>
</TR>
</TABLE>
<INPUT id="transValue" style="Z-INDEX: 102; LEFT: 8px; POSITION: absolute; TOP: 64px" type="hidden"
name="Hidden1" runat="server">
</form>
</body>
</HTML>

AjaxSeachPage.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text;

namespace WebUI.AjaxSearchSystem
{
/// <summary>
/// AjaxSeachPage 的摘要说明。
/// </summary>
public class AjaxSeachPage : System.Web.UI.Page
{
protected System.Web.UI.HtmlControls.HtmlInputHidden transValue;
protected System.Web.UI.WebControls.Button btnOK;
public const string SEARCH_WHERE_SESSION = "SearchWhere";

private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
try
{
//tableName.Value = Request.QueryString["table"].Trim();
transValue.Value = "employee";
}
catch(NullReferenceException ee)
{
throw new ArgumentOutOfRangeException("table","参数不正确,请传入预先定义的表名");
}

AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxSearchMethod));

this.btnOK.Attributes.Add("OnClick","getCombinTerm()");
}
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void btnOK_Click(object sender, System.EventArgs e)
{
Session[SEARCH_WHERE_SESSION] = transValue.Value.Trim();

Response.Write(ClosePage());
}

private string ClosePage()
{
StringBuilder js = new StringBuilder();
return js.ToString();
}
}
}

运行效果:



下载源码 AjaxGeneralSearch.rar
请大家提出宝贵意见,在此感谢我的同事 命运有自己的梦!提供的帮助!感谢日历控件提供者meizz
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: