Solved

How do you Programmatically store values in a WebPart?

Posted on 2011-09-08
12
260 Views
Last Modified: 2012-05-12
I need to have a per user DataTable Programmatically stored in a web-part.
0
Comment
Question by:Rahsaan-Pringle
  • 6
  • 4
  • 2
12 Comments
 
LVL 40

Expert Comment

by:Kyle Abrahams
ID: 36503522
Session? ViewState?

If you don't want to use the server's memory you can  use a Sql Table where user is part of the table itself.   It allows you to then
select * from table where user = @user

0
 
LVL 16

Expert Comment

by:Bryan Butler
ID: 36503552
From here:
http://msdn.microsoft.com/en-us/library/e0s9t4ck.aspx

I see this:
Creating a Data-Bound Web Parts Control
http://msdn.microsoft.com/en-us/library/ms227438.aspx

And here a code sample from a link on that page:
http://msdn.microsoft.com/en-us/library/ms227548.aspx
0
 

Author Comment

by:Rahsaan-Pringle
ID: 36503613
I originally planned to store the data in the database, because it's tabular in nature (two columns, x rows). I have been directed to avoid using the database. As far as I know, cookies aren't suitable because it's tabular, and Session isn't good because the data needs to persist between sessions. Data-Bounding isn't suitable because I have been told not to use the database.
0
Migrating Your Company's PCs

To keep pace with competitors, businesses must keep employees productive, and that means providing them with the latest technology. This document provides the tips and tricks you need to help you migrate an outdated PC fleet to new desktops, laptops, and tablets.

 
LVL 40

Expert Comment

by:Kyle Abrahams
ID: 36503623
If data needs to be persisted between sessions than database is definitely the way to go.  Cookies should be able to store that data depending on the number of rows though.  

0
 

Author Comment

by:Rahsaan-Pringle
ID: 36503625
I agree about the database. How do you stick a table in a cookie?
0
 

Author Comment

by:Rahsaan-Pringle
ID: 36503629
I agree about the database. How do you stick a DataTable in a cookie?
0
 
LVL 40

Expert Comment

by:Kyle Abrahams
ID: 36503671
same way would the session.  Just use create a cookie object.

http://msdn.microsoft.com/en-us/library/78c837bd.aspx#Y239


HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie["Font"] = "Arial";
myCookie["Color"] = "Blue";
myCookie.Expires = DateTime.Now.AddDays(1d);
Response.Cookies.Add(myCookie);


myCookie["Datatable"] = dt;
0
 

Accepted Solution

by:
Rahsaan-Pringle earned 0 total points
ID: 36503711
It's good to know I'm not entirely crazy. I did try that. It says you can't convert DTs to strings.
52E43607-FDE0-4507-9993-B3DAB520.png
0
 
LVL 40

Expert Comment

by:Kyle Abrahams
ID: 36504527
Would do it the hard way then.

Make a delimited string:

String tmp ="";

for each row in dt.Rows
  tmp += row.Columns[0] + "|" + row.Columns[1] + "|" . . .  "~";

//write to cookie

then on load do spilts:

int i;
for each string tmpRow in  myCookie["dt"].ToString().Split("!")
{
   i = 0;
   DataRow row = dt.NewRow();
   for each string col in tmpRow.Split("|")
   {
     row[ i ] = col;
     i++;
   }
     dt.Rows.Add(row);
}

     
0
 
LVL 16

Expert Comment

by:Bryan Butler
ID: 36504747
Just remember the max cookie size is 4k.
0
 

Author Closing Comment

by:Rahsaan-Pringle
ID: 36898934
I had to try something else.
0
 

Author Comment

by:Rahsaan-Pringle
ID: 36711247
zzz
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The System Center Operations Manager 2012, known as SCOM, is a part of the Microsoft system center product that provides the user with infrastructure monitoring and application performance monitoring. SCOM monitors:   Windows or UNIX/LinuxNetwo…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

805 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question