Click here to Skip to main content
Licence 
First Posted 15 Aug 2005
Views 140,588
Bookmarked 57 times

AJAX DataGrid(with client-side paging ) at glance

By | 12 Mar 2006 | Article
Genric AJAX library (fill textbox, dropdown, datagrid).
 
Part of The SQL Zone sponsored by
See Also

Sample Image - Ajax_DataGrid_at_glance.jpg

Abstract

 Hi there of course all of you hear about Ajax  ;) and about its performance,but the main problem is you have to write Javascript function for each case also I didn't found any code to fill Datagrid(note: Datagrid is converted to Html Table at Client-side) with Ajax so I decided to write  generic JavaScipt library for Ajax and also support Datagrid with paging.

How to run demo

you have to change database connection string in web.config also you have to change

javascript variable called:

var serverURL="<A href="http://163.121.16.41/">http://163.121.16.41/</A>"

to you machine IP all of three files(AjaxLibHH09b.js,AjaxLibWS09b.js & HtmlTable2.aspx)

1]-I attach to projects you can use any of them

    a-GenricAjaxWS: it is HttpHandler webservice you call it like that

       http://localhost/GenricAjaxWS/GenricAjaxWS.asmx/GetData?sqlStr=select getdate()

       it returns XML DataSet.(of course 'select getdate()' is your sql select statement)

   or

   b-GenricAjaxHH: it is  you call it like that

    http://localhost/GenricAjaxWS/GenricAjaxWS.asmx/GetData?sqlStr=select%20getdate()

     but it works faster than Webservice(you must test it).

2]-to use GenricAjaxWS version use AjaxLibWS09b.js, to use  GenricAjaxHH version use AjaxLibhh09b.js

Details

The files(AjaxLibWS09b.js,AjaxLibHH09b.js) contains javascript function

called FillTable(mySelect,myDiv,myDataGridName,pageSize,sqlStr) it takes 5 parameters

1]-mySelect:dropdown list name(to filter datagrid).

2]-myDiv:html Div (to place grid on it).

3]-myDataGridName:datagrid name

4]-pageSize:count of rows in each datagrid page

5]-sqlStr:sql select statement.

there are another Function called FillTable(myDiv,myDataGridName,pageSize,sqlStr)

it works like the above but it doesn't take dropdown list name.

to use it you have to add this controls to you page

a]-add html hidden input called DataGrid1__PAGENUM.

b]-add html div and add id attribute to it(you will use this id).

c]-add any control to fire Fill function and add this line of code in page load

button1.Attributes.Add("onclick",
   "FillTable('oDiv','ClientPageDataGrid1',3, 
   'SELECT title,type,pub_id,price,advance FROM titles');");

while 'button1' is your control name

d]-add javascript file to project.

e]-add script tag in page head(in aspx) to map to script file.

and have fun.

Hints

there are some other functions

1]-FillTextBoxesFromDDLOnChange(mySelect,ar2,sqlStr):to fill a list of textboxes according to dropdown selection

DropDownList1.Attributes.Add("onchange",
   "FillTextBoxesFromDDLOnChange('DropDownList1',['TextBox1','TextBox2',
   'TextBox3','TextBox4','TextBox5'], 'SELECT title,type," + 
   "pub_id,price,advance FROM titles where title_id=');");

2]-FillDropDownFromDropDown(mySelect,mySelect2,sqlStr):to filter dropdown from another dropdown

DropDownList1.Attributes.Add("onchange", 
  "FillDropDownFromDropDown('DropDownList1','DropDownList2', 
   'SELECT fname,emp_id FROM employee WHERE pub_id=');");

3]-FillDDL(mySelect,sqlStr)&clearDDL(mySelect): to fill and clear dropdown.

 

Links

1-AJAX

2-Client-side paging for DataGrids

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Taha Amin

Team Leader
http://www.linkdev.com/
Egypt Egypt

Member

B/OSS.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
Generalcode PinmemberMember #38040310:46 21 Feb '07  
GeneralUsing vb.net Pinmembernik_crash20:05 13 Sep '05  
GeneralSQL Injection Pinmemberbigals13:08 15 Aug '05  
GeneralRe: SQL Injection PinmemberTaha Zayed22:09 15 Aug '05  
GeneralRe: SQL Injection PinmemberMika23:51 16 Aug '05  
GeneralRe: SQL Injection PinmemberJohn Goodwin6:29 17 Aug '05  
GeneralRe: SQL Injection PinmemberTaha Zayed19:58 17 Aug '05  
GeneralRe: SQL Injection PinmemberTaha Zayed20:06 17 Aug '05  
GeneralRe: SQL Injection PinmemberTaha Zayed12:16 18 Aug '05  
GeneralRe: SQL Injection PinmemberMark Brandon4:08 25 Aug '05  
GeneralRe: SQL Injection PinmemberTaha Zayed4:33 25 Aug '05  
GeneralRe: SQL Injection PinmemberMark Brandon5:12 25 Aug '05  
GeneralRe: SQL Injection PinmemberTaha Zayed5:26 25 Aug '05  
GeneralRe: SQL Injection PinPopularmemberMark Brandon5:57 25 Aug '05  
GeneralRe: SQL Injection - encrypting javascript Pinmemberegozi137:01 14 Mar '06  
How can you encrypt the javascript?
 
The browser should be able to parse and run the juvascript code, so the client computer should have the ability to decrypt the javascript, hence so could any attacker.
 
As said before, security decisions are made during the architecture and design phases, not after developing.
 
And another thing. sending data as xml is good when you need interoperabilty, that is when the publisher and the consumer are not part of the same system. Our scenario (html page generated from an asp.net Page) is hardly the same. The overhead of serializing to xml, parsing and desirializing on the otherhand and the network traffic load is what makes an application slow and not responsive, what takes the cherry out of the whole ajax concept.
A lot better idea here would be to do some kind of binary seriliazation, or maybe even sending the newly generated viewstate to the browser, and populate the grid from the viewstate (you earn viewstate consistency, too).
I'd propose looking into the code of the Anthem.NET library, that uses the last approach.
 
Nevertheless, your solution is working, and probably gives you the functunality that you need, and I guess that by publishing it on Codeproject, some people will be able to learn from it and that is the whole concept of this site, so I salute you for the effort you took to write the library, and the effort you took to publish it here, and may we read more stuff from you (maybe with better security considerations Wink | ;) )

GeneralRe: SQL Injection - encrypting javascript PinmemberTaha Zayed20:49 14 Mar '06  
GeneralThis is not encryption, but merely encoding Pinmemberegozi136:03 15 Mar '06  
GeneralRe: This is encryption, but merely encoding PinmemberTaha Zayed7:22 15 Mar '06  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web04 | 2.5.120529.1 | Last Updated 12 Mar 2006
Article Copyright 2005 by Taha Amin
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid