您的位置:知识库 » Web前端

Variable 1.1—增加对JSON的支持

作者: 卢春城  来源: 博客园  发布时间: 2009-03-24 10:28  阅读: 2761 次  推荐: 0   原文链接   [收藏]  
摘要:Variable1.1是一个用于在客户端与服务器之间传递数据的控件,Variable1.1的功能特点有:可以向Javascript传递DataTable,Hashtable等类型的变量,并在页面生成一个名称与控件ID相同的变量以方便访问。在客户端可以使用Javascript修改变量的值,提交在后台可以获得该变量更新后的值。
[1] 向客户端Javascript传递变量
[2] 在页面中访问变量
[3] 将数据送回服务器

3.将数据送回服务器

当你在客户端修改变量的值后,提交后Variable将自动把修改后的值送回服务器。例如:

在客户端用以下代码修改变量MyVariable的值

MyVariable=['Hello','World']

 

提交后,服务器Variable控件MyVariable的值将更新为:

 

4.JSON和.NET类型对应关系

Value和JSON是同步的,当设置其中一个属性时,另外一个属性也会跟着变化,互相转换时类型对应关系如下:

JSON转.NET

image

.NET转JSON

 image

例如:

时间{2009-3-23 23:08:14} 转成JSON后为:

{"Year":2009,"Month":3,"Day":23,"Hour":23,"Minute":8,"Second":14}

 

表格

image

转成JSON为:

[
    {
        
'Tel':'24325',
        
'Name':'John',
        
'Mail':'John@126.com'
    },
    {
        
'Tel':'1234567',
        
'Name':'Tom',
        
'Mail':'Tom@126.com'
    },
    {
        
'Tel':'963258',
        
'Name':'Lucy',
        
'Mail':'Lucy@hotmail.com'
    }
]

5.Ajax网站使用Variable注意事项

如下图所示:

image

Button1放置在UpdatePanel1中,假设其OnClick事件为Button1_Click,如果在Button1_Click中修改了Vairable的值,则必须调用ScriptManager.RegisterStartupScript注册Variable的初始化Javascript脚本以保证将更新后的值传送到客户端,如下所示:

protected void Button1_Click(object sender, EventArgs e)
{
    Variable1.Value 
= new Decimal[] { 0123 };
    ScriptManager.RegisterStartupScript(
        UpdatePanel1,
        
typeof(string),
        
"Variable1.AjaxStartupScript",
        Variable1.AjaxStartupScript,
        
true
    );
}

 


6.在客户端使用form的submit()方法注意事项

由于submit方法不触发onsubmit事件,因此,在调用submit方法前,必须调用VariableManager.RefreshAll()将页面中所有Variable控件对应的变量转换成XML并保存到hidden控件以传送到服务器,如下所示:

VariableManager.RefreshAll()
form1.submit()

 

7.DataTable在客户端的储存方式

Variable控件支持将DataTable发送到客户端,在客户端同样用一个DataTable对象来储存以方便操作,其代码如下所示:

function DataTable()
{
    
if(arguments.length==3)
    {
        
this.Rows=arguments[0]
        
this.Columns=arguments[1]
        
this.Name=arguments[2]
    }
    
else
    {
        
this.Columns=new Array()
        
this.Rows=new Array()
        
this.Name=''
    }
    
    
this.AddColumn=function(name)
    {
        
this.Columns.push(name)
    }
   
    
this.NewRow=function()
    {
        row
={}
        
for(c=0;c<this.Columns.length;c++)
        {
            row[
this.Columns[c]]=""
        }
        
return row
    }
   
    
this.AddRow=function(cols)
    {
        row
=this.NewRow()
        
for(c=0;c<this.Columns.length;c++)
        {
            name
=this.Columns[c]
            row[name]
=cols[name]
        }
        
this.Rows.push(row)
    }
   
    
this.DeleteRow=function(index)
    {
        
this.Rows.splice(index,1)
    }
}

 

如果对Variable控件有任何意见和建议,请发邮件到mrlucc@126.com

0
0
 
标签:ASP.NET

Web前端热门文章

    Web前端最新文章

      最新新闻

        热门新闻