Share Internet Across All Devices @ Home/Office using 3G USB Stick (Adapter/Dongle/Data Card) & WiFi Router

This post is for those who are using 3G USB Dongle (Tata Phone+, Airtel 3G Stick, BSNL 3G Stick etcтАж), without inbuilt support of wireless connection, but they still want to use the same connection across all the WiFi supported devices @ home/office.

Let me tell you why I need thisтАж I am having couple of devices like two laptops, PS3, iPod, Android Phone and an Android tabletтАж All these devices can connect to WiFi network. But I am using 3G USB Stick which I can use only in my laptop and thatтАЩs why I want to create a network by which I can share my internet in all my devices.

First easiest option is I can create an Ad-Hoc connection in windows. But drawback is PS3 & Android devices are not able to connect to this Ad-Hoc connection.

Now the second option is we use ICS (Internet Connection Sharing) by mapping 3G Stick connection with wifi adapter of laptop/desktop by setting following configurations. So at the end weтАЩll have something like:

3G USB Adapter + WiFi Router Setup
Share Internet using 3G USB Adapter & WiFi Router

редред рк╢рлНрк░рлА ркЧрлЛрккрлЗркирлНркжрлНрк░рк╛рк╖рлНркЯркХркорлН редред

рк╕рлМрк░рк╛рк╖рлНркЯрлНрк░ркоркВркбрк▓рлЗ рк╕рлМркнрк╛ркЧрлНркпрк╢рлНркпрк╛ркорк╛, ркорк╣рк╛ркоркдрлНркдркоркВркбрккрлЗ ркЬркирк╕ркВркЧркорлИркЪ рее
ркдрк╕рлНркпрккрк╛ркжрлНрк░рк░рлЗркгрлБркВ ркХркВркарлЗ ркЪ ркХркгрк┐ркХрк╛, ркирк┐ркбрк░рлЛрккрк┐ркХрк╛рк▓ркВ ркирк┐рк░рлНркШрлЛрк╖ркирк┐ркдрлНркпркорлНтАМ реерлзрее

ркЬркирк╕ркВркЧркорлИркЪ ркЕрк╡рк┐рк▓рлЛркХрлНркпркмрк╛рк▓рк╛, рккрлБрк░рлНрк╡рлЗрк╖рлБ рк░рк╛рк╕ рк╡рлГркЬ рк╡рк╕рлБркзрк╛ркпркорлНтАМ рее
рк╡ркЪркирлЛрк╡рк┐рк▓рк╛рк╕ркВ рк╕рлМрк░рк╖рлНркЯрлНрк░ркоркВркбрк▓рлЗ, рк░рк╛рк╕рк╛ркзрк┐рккркдрк┐рк░рк╛ркпрлЗ рк╢рлНрк░рлАркЧрлЛрккрлЗркирлНркжрлНрк░ркШрлЛрк╖ркорлНтАМ реерлирее

рк╢рлНрк░рлАркЧрлЛрккрлЗркирлНркжрлНрк░рк░рк╛ркп, рк╢рлНрк░рлАркЧрлЛрккрк╛рк▓ркиркВркжрки, ркЪркдрлБрк░рк╛ркжрк╢рлАркорк╛рк╕ ркЖрк╕рлЛ ркЙркжркпркорлНтАМ рее
рк╢рлНрк░рлАркоркжрлНтАМ ркЧрлЛркХрлБрк▓ ркЧрк╛ркорлЗркирк┐рк╡рк╛рк╕ркВ рк╡ркЪркирлЛ рк╡рк┐рк▓рк╛рк╕ рк╡рлГркЬ рк╕рлБркВркжрк░рлАркпркорлНтАМ реерлйрее

рк╡рк┐рк╕рлНркдрк╛рк░рк╡рлГркЬркнркХрлНркд рк╕рлМрк░рк╖рлНркЯрлНрк░ркоркВркбрк▓рлЗ, ркХрлГрккрк╛ркирк╛рке ркХрк░рлВркгрк╛ ркХрк░рлА рккрк╛рк╡ ркзрк░ркгрлЗ рее
ркдркжрлНркжркирк╛ркоркирк┐рк░рлНркнркп ркдрлНрк░рк┐рк╡рк┐ркзркдрк╛ркк рк╣рк░ркгрлЗ, рккрлБрк╖рлНркЯрк┐ркЬркирлЛркирк╛рко рк░рк╣рк╕рлНркп рккрлБрк╖рлНркЯ рк╡рк░рлНркгрк╡рлЗ реерлкрее

ркорк╣рк╛ркоркдрлНркдркоркВркбрккрлЗ ркзрлНрк╡ркЬрк╛ ркзрлАрк░ ркзрк░ркгрлЗ, рк░рк╕рк▓рлБркмрлНркзрк▓рлЛркнрлА ркорк│рлНркпрк╛ ркЦркВркбрлЛркЦркВркбрлЗ рее
ркЧрлБркгркЧрк╛рки ркЧрк╛ркпрлЗ рк╢рлНрк░рлАркЧрлЛрккрлЗркирлНркжрлНрк░рк╕ркВркЧрлЗ, ркирк╣рк┐ рк╕рлНрк╡рк░рлНркЧ рккрк╛ркдрк╛рк▓ ркПркХрлЛ ркмрлНрк░ркжрлНркорк╛ркВркбрлЗ реерллрее

ркЕркВркЧрлЛркЕркВркЧркХркВркарлЛркХркВркаркорк┐рк▓рк╛ркк, рк╣рк░ркЦрлЗ рк╣рлБрк▓рлНрк▓рк╛рк╕ рк╣рлБрк▓рлНрк▓рк╛рк╕ рк╕рлЛрк╣рк╛ркЧркорлНтАМ рее
ркорк╛рк▓рк╛ркдрк┐рк▓ркХ ркдрк╛ркВркжрлБрк▓ рк╢рк┐рк░ ркЫрк╛рккркВ, ркЬркпркЬркпрк░рк╛ркп рк╢рлНрк░рлАркЧрлЛрккрлЗркирлНркжрлНрк░ ркЧрлЛрккрлЗркирлНркжрлНрк░ ркЬрк╛рккркВ реерлмрее

ркЕркирлНркпрлЛркЕркирлНркп рккрлНрк░рк╕рк╛ркж рккрлНрк░рлЗркорлЗ рккрлНрк░ркХрк╛рк╢ркВ, ркорк╣рк╛ркЬрлБркеркорк╣рк╛ркЬрлБркеркиркпркгрлЗ ркирк┐рк╡рк╛рк╕ркВ рее
ркЕркжрлНтАМркдрк╡рк╛ркЬрк╛ ркерлИркЗ ркерлИркЗ рк╡рк╛ркЬрлЗ, рк░рк╕рк┐ркХрк░рк╛ркп рк╢рлНрк░рлАркЧрлЛрккрлЗркирлНркжрлНрк░ ркоркзрлНркпрлЗ рк╡рк┐рк▓рк╛рк╕ркВ реерлнрее

рк╕рклрк▓ рк╢рлБркжрлНркз рк╕рлБркХрлГркд рккрлВрк░рлНрк╡рлЗ рк╡рк┐ркХрк╛рк╕ркВ, рк╕ркХрк▓ ркЕркВркЧ ркЕрк░рлНрккркг рк░ркоркг рк░рк╣рлЗрк╢ рк░рк╛рк╕ркВ рее
ркЬркпркЬркпркХрк╛рк░ ркЬркпркЬркпркХрк╛рк░ рк░рк╛рк╕рлЗ рк╡рк┐рк▓рк╛рк╕ркВ, тАШркмрк┐рк╣рк╛рк░рлАркжрк╛рк╕тАЩ ркдрк╡ ркЪрк░ркгрлЗ ркирк┐рк╡рк╛рк╕ркВ реерлорее

 

рее ркЗркдрк┐ тАШрк╢рлНрк░рлА ркмрк┐рк╣рк╛рк░рлАркжрк╛рк╕тАЩ рк╡рк┐ркЪрк░рк┐ркд тАШрк╢рлНрк░рлАркЧрлЛрккрлЗркирлНркжрлНрк░рк╛рк╖рлНркЯркХркорлНтАМтАЩ рк╕ркВрккрлВрк░рлНркг рее

редред рк╢рлНрк░рлА ркЧрлЛрккрк╛рк▓рк╛рк╖рлНркЯркХркорлНтАМ редред

ркЪрк┐ркдрлНркд ! ркХрк┐ркорк░рлНркеркВ ркзрк╛рк╡рк╕рк┐ рк╡рлНркпрк░рлНркеркВ, ркнркпркдрлНрк░рк┐рк╕рлНркдркВ рк╢рлЛркХрк╕рлБркЧрлНрк░рк╕рлНркдркорлНтАМ редред
ркЧрлЛркХрлБрк▓рк╢рк░ркгркВ ркнрк╡ркнркпрк╣рк░ркгркВ, рк░ркШрлБрккркдрк┐ркмрк╛рк▓ркВ ркнркЬ ркЧрлЛрккрк╛рк▓ркорлНтАМ редредрлзредред

рк╕рк╕рлНркорк┐ркдрк╡ркЪркиркВ рк╕рлБрк▓рк▓рк┐ркдрк░ркЪркиркВ, рк╡рлНрк░ркЬрккркдрк┐рк░ркХрлНркдркВ ркЬркиркирк┐ркЬркнркХрлНркдркорлНтАМ редред
ркзрлГркдркоркгрк┐рк╣рк╛рк░ркВ рккрк░ркорлЛркжрк╛рк░ркВ, рк░ркШрлБрккркдрк┐ркмрк╛рк▓ркВ ркиркоркГ ркЧрлЛрккрк╛рк▓ркорлНтАМ редредрлиредред

рк╡рк┐ркзрлНркпрк╛рк╡рк▓рк┐ркдркВ ркХрлБркгрлНркбрк▓рк▓рк▓рк┐ркдркВ, рк╡рк┐рк╖ркп рк╡рк┐ркдрлБрк╖рлНркгркВ рк╕рлЗрк╡рк┐ркдркХрлГрк╖рлНркгркорлНтАМ редред
ркЬркЧркдрлЛркмркирлНркзрлБркВ ркХрк░рлВркгрк╛рк╕рк┐ркирлНркзрлБркВ, рк░ркШрлБрккркдрк┐ркмрк╛рк▓ркВ рк╕рлНркорк░ ркЧрлЛрккрк╛рк▓ркорлНтАМ редредрлйредред

ркнркЬрки рк╕ркпркирлНркдркВ ркЬркЧркдрлЛрк░ркдрлНркиркВ, рк╕рлНрк╡ркХрлБрк▓рлЛркдрлНркдркВрк╕ркВ ркжрлНрк░рлБркдрк╣ркдркХркВрк╕ркорлНтАМ редред
ркмрлБркзркЬркирк╡ркирлНркзркВ ркорк╣ркжркнрк┐ркиркирлНркзркВ, рк░ркШрлБрккркдрк┐ркмрк╛рк▓ркВ рк╡ркж ркЧрлЛрккрк╛рк▓ркорлНтАМ редредрлкредред

ркзрк░ркгрлАркжрлЗрк╡ркВ ркХрлГркдрк╣рк░рк┐рк╕рлЗрк╡ркВ, рккркВркХркЬркиркпркиркВ рк╕рлБрк▓рк▓рк┐ркдрк╢ркпркиркорлНтАМ редред
ркЕркнрк┐ркирк╡рк╡рлЗрк╖ркВ ркЬркирк╣рлНрк░ркжркпрлЗрк╢ркВ, рк░ркШрлБрккркдрк┐ркмрк╛рк▓ркВ рк╡ркж ркЧрлЛрккрк╛рк▓ркорлНтАМ редредрллредред

ркЧрлБркгркЧрлБркгркзрлАрк░ркВ рк╣рлНрк░ркжркпркЧркВркнрлАрк░ркВ, рк╕рлБркнркЧрк╢рк░рлАрк░ркВ ркзрлГркдрк╢рлБркЪрк┐ркЪрлАрк░ркорлНтАМ редред
ркЬркпркжркнрк┐рк░рк╛ркоркВ рк╕рлНркорк┐ркдркЬрк┐ркд ркХрк╛ркоркВ, рк░ркШрлБрккркдрк┐ркмрк╛рк▓ркВ рк╕рлНркорк░ ркЧрлЛрккрк╛рк▓ркорлНтАМ редредрлмредред

ркнркХрлНркдрк┐ркирк┐ркзрк╛ркиркВ ркХрлГркдркмрк╣рлБркжрк╛ркиркВ, рккрлВркЬрк┐ркдрк╡рк┐ркЬрлНркЮркВ рк╕рк░рлНрк╡ркЧрлБркгркЬрлНркЮркорлНтАМ редред
ркжрлАркиркжркпрк╛рк│рлБркВ ркнркХрлНркдркХрлГрккрк╛рк│рлБркВ, рк░ркШрлБрккркдрк┐ркмрк╛рк▓ркВ ркнркЬ ркЧрлЛрккрк╛рк▓ркорлНтАМ редредрлнредред

ркирк╛ркирк╛рк╡рк┐ркжрлНркпркВ рк╕рлБркоркирлЛрк╣рлНрк░ркжрлНркпркВ, ркЬркЧркжрк╛рк╣рк▓рк╛ркжркВ рк╕рлБрк╕рлНрк╡рк░ркирк╛ркоркжркорлНтАМ редред
рк╢рлБркЪрк┐ркорк┐ркдркХркеркиркВ рк╢рлНрк░рлБркдрк┐ркоркзрлБрк░ркеркиркорлНтАМ, рк░ркШрлБрккркдрк┐ркмрк╛рк▓ркВ ркнркЬ ркЧрлЛрккрк╛рк▓ркорлНтАМ редредрлоредред

рк╢рлНрк░рлНрк▓рлЛркХрк╛рк╖рлНркЯркХркВ рк╢рлНрк░рлАрк░ркШрлБркирк╛ркерккрлБркдрлНрк░ тАУ ркЧрлЛрккрк╛рк▓ркирк╛ркорлНркиркГ рк╕ркоркзрлАркдрк╕рк╛ркорлНркиркГ редред
ркирк┐ркдрлНркп ркирк░рлЛ ркпркГ рккрлНрк░рккркарлЗркдрлНрк╕рлБркжрлНркпрк╛ркорлНркиркГ рккрлНрк░рк╛рккрлНркирлЛркдрк┐ рк╢рлАркШрлНрк░ркВ рккрк░ркоркВ рккркжркВ рк╕ркГ редредрлпредред

ркЖрк░рк╛ркзрлНркп ркЧрлЛрккрк╛рк▓рккркжрк╛рк░рк╡рк┐ркирлНркжркВ, рк╕ркВрк╕ркХрлНркд тАШркдрк╛рк░рк╛тАЩ ркнрк┐ркзрк╕рлЗрк╡ркХрлЗрки редред
рк╕рлНркдрлЛркдрлНрк░ркВ ркХрлГркдркВ ркпркГ рк╕рлНркорк░рлЗркдрлНркдрлНрк░рк┐рк╕ркирлНркзрлНркпркВ, рк╕ркВркорлНрккрлВрк░рлНркгркХрк╛ркоркВ рккркжркорлЗркдрк┐ рк╡рк┐рк╖рлНркгрлЛркГ редредрлзрлжредред

 

редред ркЗркдрк┐ тАШрк╢рлНрк░рлА ркдрк╛рк░рк╛ рк╕рлЗрк╡ркХтАЩ рк╡рк┐рк░ркЪрк┐ркд тАШрк╢рлНрк░рлА ркЧрлЛрккрк╛рк▓рк╛рк╖рлНркЯркХркорлНтАМтАЩ рк╕ркорлНрккрлВрк░рлНркг редред

редред рк╢рлНрк░рлА ркпркорлБркирк╛рк╖рлНркЯркХркорлН редред

ркиркорк╛ркорк┐ ркпркорлБркирк╛ркорк╣ркВ рк╕ркХрк▓рк╕рк┐ркзрлНркзрк┐рк╣рлЗркдрлБркВ ркорлБркжрк╛, ркорлБрк░рк░рк┐рккркжрккркВркХркЬ рк╕рлНрклрлБрк░ркжркоркирлНркжрк░рлЗркгрлВркдрлНркХркЯрк╛ркорлНтАМ редред
ркдркЯрк╕рлНркеркирк╡ркХрк╛ркирки рккрлНрк░ркХркЯркорлЛркжрккрлБрк╖рлНрккрк╛ркорлНркмрлБркирк╛, рк╕рлБрк░рк╛рк╕рлБрк░рк╕рлБрккрлВркЬрк┐ркд рк╕рлНркорк░рккрк┐ркдрлБркГрк╢рлНрк░рк┐ркпркВркмрк┐ркнрлНрк░ркдрлАркорлНтАМ редредрлзредред

ркХрк▓рк┐ркирлНркжркЧрк┐рк░рк┐ркорк╕рлНркдркХрлЗ рккркдркжркоркирлНркжрлНрккрлВрк░рлЛркЬрлНркЬрк╡рк▓рк╛, рк╡рк┐рк▓рк╛рк╕ркЧркоркирлЛрк▓рлНрк▓рк╕ркдрлНтАМ рккрлНрк░ркХркЯркЧркгрлНркбрк╢рлИрк▓рлЛркирлНркиркдрк╛ редред
рк╕ркШрлЛрк╖ркЧркдрк┐ркжркирлНркдрлБрк░рк╛ рк╕ркоркзрк┐рк░рлВрквркжрлЛрк▓рлЛркдрлНркдркорк╛, ркорлБркХрлБркирлНркжрк░ркдрк┐рк╡рк░рлНркзрк┐ркирлА ркЬркпркдрк┐ рккркжрлНркорлНркмркирлНркзрлЛркГ рк╕рлБркдрк╛ редредрлиредред

ркнрлБрк╡ркВ ркнрлБрк╡ркирккрк╛рк╡ркирлА ркоркзрк┐ркЧркдрк╛ркоркирлЗркХрк╕рлНрк╡ркирлИркГ, рккрлНрк░рк┐ркпрк╛ркнрк┐рк░рк┐рк╡ рк╕рлЗрк╡рк┐ркдрк╛ркВ рк╢рлБркХркоркпрлВрк░рк╣ркВрк╕рк╛ркжрлНркжрк┐ркнрк┐ркГ редред
ркдрк░ркВркЧркнрлБркЬркХркВркХркг рккрлНрк░ркХркЯркорлБркХрлНркдрк┐ркХрк╛рк╡рк╛рк▓рлБркХрк╛, ркирк┐ркдркорлНркмркдркЯрк╕рлБркирлНркжрк░рлАркВ ркиркоркд ркХрлГрк╖рлНркгркдрлБрк░рлНркпрккрлНрк░рк┐ркпрк╛ркорлНтАМ редредрлйредред

ркЕркиркирлНркдркЧрлБркгркнрлВрк╖рк┐ркдрлЗ рк╢рк┐рк╡рк╡рк┐рк░ркВркЪрк┐ркжрлЗрк╡рк╕рлНркдрлБркдрлЗ, ркзркирк╛ркзркиркирк┐ркнрлЗ рк╕ркжрк╛ ркзрлНрк░рлБрк╡рккрк░рк╛рк╢рк░рк╛ркнрлАрк╖рлНркЯркжрлЗ редред
рк╡рк┐рк╢рлБркжрлНркзркоркерлБрк░рк╛ркдркЯрлЗ рк╕ркХрк▓ркЧрлЛрккркЧрлЛрккрлАрк╡рлГркдрлЗ, ркХрлГрккрк╛ркЬрк▓ркзрк┐рк╕ркВрк╢рлНрк░рк┐ркдрлЗ ркорко ркоркиркГ рк╕рлБркЦркВ ркнрк╛рк╡ркп редредрлкредред

ркпркпрк╛ ркЪрк░ркгрккркжрлНркоркЬрк╛ ркорлБрк░рк░рк┐рккрлЛркГ рккрлНрк░рк┐ркпркВркнрк╛рк╡рлБркХрк╛, рк╕ркорк╛ркЧркоркиркдрлЛркнрк╡ркдрлНтАМ рк╕ркХрк▓рк╕рк┐ркжрлНркзрк┐ркжрк╛ рк╕рлЗрк╡ркдрк╛ркорлНтАМ редред
ркдркпрк╛ рк╕ркжрлГрк╢ркдрк╛ркорк┐ркпрк╛ркдрлНтАМ ркХркорк▓ркЬрк╛ рк╕рккркдрлНркирлАрк╡ ркпркдрлНтАМ, рк╣рк░рк┐рккрлНрк░рк┐ркпркХрк▓рк┐ркирлНркжркпрк╛ ркоркирк╕рк┐ ркорлЗ рк╕ркжрк╛ рк╕рлНркерлАркпркдрк╛ркорлНтАМ редредрллредред

ркиркорлЛрк╕рлНркдрлБ ркпркорлБркирлЗ рк╕ркжрк╛ ркдрк╡ ркЪрк░рк┐ркдрлНрк░ркоркдрлНркпркжрлНтАНркнрлБркдркВ, рки ркЬрк╛ркдрлБ ркпркоркпрк╛ркдркирк╛ ркнрк╡ркдрк┐ ркдрлЗ рккркпркГрккрк╛ркиркдркГ редред
ркпркорлЛрккрк┐ ркнркЧрк┐ркирлА рк╕рлБркдрк╛ркирлНтАМ ркХркеркорлБ рк╣ркирлНркдрк┐ ркжрлБрк╖рлНркЯрк╛ркирккрк┐, рккрлНрк░рк┐ркпрлЛ ркнрк╡ркдрк┐ рк╕рлЗрк╡ркирк╛ркдрлНтАМ ркдрк╡ рк╣рк░рлЗрк░рлНркпркерк╛ ркЧрлЛрккрк┐ркХрк╛ркГ редредрлмредред

ркоркорк╛рк╕рлНркдрлБ ркдрк╡ рк╕ркирлНркирк┐ркзрлМ ркдркирлБркирк╡ркдрлНрк╡ркорлЗркдрк╛рк╡ркдрк╛, рки ркжрлБрк░рлНрк▓ркнркдркорк╛ рк░ркдрк┐ рк░рлНркорлБрк░рк░рк┐рккрлМ ркорлБркХрлБркирлНркжрккрлНрк░рк┐ркпрлЗ редред
ркЕркдрлЛрк╕рлНркдрлБ ркдрк╡┬а рк▓рк╛рк▓ркирк╛ рк╕рлБрк░ркзрлБркирлА рккрк░ркВрк╕ркВркЧркорк╛ркдрлНтАМ, ркдрк╡рлИрк╡ ркнрлБрк╡рк┐ ркХрлАрк░рлНркдрк┐ркдрк╛ рки ркдрлБ ркХркжрк╛рккрк┐ рккрлБрк╖рлНркЯрк┐рк╕рлНркерк┐ркдрлИркГ редредрлнредред

рк╕рлНркдрлБркдрк┐ркВ ркдрк╡ ркХрк░рлЛркдрк┐ ркХркГ ркХркорк▓ркЬрк╛рк╕рккркдрлНркирк┐ рккрлНрк░рк┐ркпрлЗ, рк╣рк░рлЗрк░рлНркпркжркирлБрк╕рлЗрк╡ркпрк╛ ркнрк╡ркдрк┐ рк╕рлМркЦрлНркпркорк╛ркорлЛркХрлНрк╖ркдркГ редред
ркЗркпркВ ркдрк╡ ркХркерк╛ркзрк┐ркХрк╛ рк╕ркХрк▓ркЧрлЛрккрк┐ркХрк╛рк╕ркВркЧрко, рк╕рлНркорк░рк╢рлНрк░ркоркЬрк▓рк╛ркгрлБркнрк┐ркГ рк╕ркХрк▓ркЧрк╛ркдрлНрк░ркЬрлИркГ рк╕ркВркЧркоркГ редредрлоредред

ркдрк╡рк╛рк╖рлНркЯркХркорк┐ркжркВ ркорлБркжрк╛ рккркаркдрк┐ рк╕рлВрк░рк╕рлВркдрлЗ рк╕ркжрк╛, рк╕ркорк╕рлНркдркжрлБрк░рк┐ркдркХрлНрк╖ркпрлЛ ркнрк╡ркдрк┐ рк╡рлИ ркорлБркжрлБркирлНркжрлЗ рк░ркдрк┐ркГ редред
ркдркпрк╛ рк╕ркХрк▓рк╕рк┐ркжрлНркзркпрлЛ ркорлБрк░рк░рк┐рккрлБрк╢рлНрк░рлНрк╡ рк╕ркВркдрлБрк╖рлНркпркдрк┐, рк╕рлНрк╡ркнрк╛рк╡рк╡рк┐ркЬркпрлЛ ркнрк╡рлЗркдрлНтАМ рк╡ркжркдрк┐ рк╡рк▓рлНрк▓ркнркГ рк╢рлНрк░рлАрк╣рк░рлЗркГ редредрлпредред

 

редред ркЗркдрк┐ рк╢рлНрк░рлАркоркжрлНтАМ рк╡рк▓рлНрк▓ркнрк╛ркЪрк╛рк░рлНркп рк╡рк┐рк░ркЪрк┐ркдркВ рк╢рлНрк░рлА ркпркорлБркирк╛ркЗркХ рк╕рлНркдрлЛркдрлНрк░ркВ рк╕ркВрккрлВрк░рлНркгркорлНтАМ редред

 

Extending ArrayCollection to Implement Inbuilt Filter Functionality

Now a days many of the data-centric Flex (Flash Builder) applications are using DataGrid/AdvancedDataGrid. DataGrid is a one of the powerful component in Flex.

I’ve executed couple of projects around these components, where I used to implement search functionality (filtering data based on certain criteria). In order to simplify filtering, I’ve created custom class around ArrayCollection (which we’re extensively using for dataProvider), which will help to reduce a bit of code for me…

Limitation of this code is, we can only add single column criteria for filtering data.
e.g. in one criteria would be dataField=”name” & filterValue=”Some Keyword”, second would be growth=”30″ likewise.. what we can’t add is something like multiple fields in single criteria, “dataField”=”name, growth” & filterValue=”Some Keyword”.. Also we can not do any conditional search, e.g. value>10..

Attached code will produce following result.
[SWF]http://chintanbuch.com/wp-content/uploads/2011/08/arraycollection_filter_1.swf, 250, 300[/SWF]

There are two classes, which we need to use in order to implement search capablity:

FilterCriteriaVO:

1
2
3
4
5
6
7
8
9
10
11
public class FilterCriteriaVO extends Object
{
	public var dataField    :String;
	public var filterValue  :*;
	public var exactMatch   :Boolean;
 
	public function FilterCriteriaVO()
	{
		super();
	}
}

ArrayCollectionEx:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
public class ArrayCollectionEx extends ArrayCollection
	{
		/**
		 * This array will have "Data Field of Column", "Filter Value" & "Exact Match Flag" pair
		 * - "Data Field of Column" is on which we want to filter
		 * - "Filter Value" with what we want to filter
		 * - "Exact Match Flag" will check for the exactly matching value, instead of part of value
		 * */
		public var dataFilterCriteria	:Array = new Array();
		private var strFilterItemValue	:String;
		private var strFilterFor		:String;
 
		public var customFilterFunction:Function;
 
		public function ArrayCollectionEx(source:Array=null)
		{
			super(source);
			filterFunction = dataFilterFunction;
		}
 
		protected function dataFilterFunction(dataValue:Object):Boolean
		{
			if(dataFilterCriteria.length < 1) {return true;}
			if(customFilterFunction != null){return customFilterFunction(dataValue);}
 
			var filterMe:Boolean;
			var dataItem:Object = dataValue;
			if(dataFilterCriteria.length > 0) {
				for(var i:int=0; i<dataFilterCriteria.length; i++) {
					if((dataFilterCriteria[i] as FilterCriteriaVO).exactMatch) {
						if(dataItem[(dataFilterCriteria[i] as FilterCriteriaVO).dataField] == (dataFilterCriteria[i] as FilterCriteriaVO).filterValue)
							{filterMe = true;}
						else	
							{return false;}
					} else {
						strFilterItemValue = (dataItem[(dataFilterCriteria[i] as FilterCriteriaVO).dataField] as String).toLowerCase();
						strFilterFor = (dataFilterCriteria[i] as FilterCriteriaVO).filterValue.toLowerCase();
						if(strFilterItemValue.indexOf(strFilterFor) > -1)
							{filterMe = true;}
						else
							{return false;}
					}
				}
			}
			return filterMe;
		}
 
		public function addFilterCriteria(filterCriteriaVO:FilterCriteriaVO):void
		{
			if(dataFilterCriteria.length > 0) {
				var foundSimilarCriteria:int = checkForItemInCriteria(filterCriteriaVO.dataField)
				if(foundSimilarCriteria > -1) {
					(dataFilterCriteria[foundSimilarCriteria] as FilterCriteriaVO).filterValue = filterCriteriaVO.filterValue;
					this.refresh();
					return;
				}
				dataFilterCriteria.push(filterCriteriaVO);
				this.refresh();
			} else {
				dataFilterCriteria.push(filterCriteriaVO);
				this.refresh();
			}
		}
 
		public function removeFilterCriteria(filterCriteriaVO:FilterCriteriaVO):void
		{
			if(dataFilterCriteria.length > 1) {
				var foundSimilarCriteria:int = checkForItemInCriteria(filterCriteriaVO.dataField);
				if(foundSimilarCriteria >= 0) {
					dataFilterCriteria.splice(foundSimilarCriteria, 1);
					this.refresh();
				}
			} else if(dataFilterCriteria.length == 1) {
				dataFilterCriteria = [];
				this.refresh();
			}
		}
 
		protected function checkForItemInCriteria(dataField:String = null):int
		{
			var foundSimilarCriteriaAt:int = -1;
			for(var i:int=0; i<dataFilterCriteria.length; i++) {
				if((dataFilterCriteria[i] as FilterCriteriaVO).dataField == dataField) {
					foundSimilarCriteriaAt = i;
					break;
				}
			}
			return foundSimilarCriteriaAt;
		}

Source Files