Solved

Session[keys.Current.ToString()]));

Posted on 2006-11-07
24
531 Views
Last Modified: 2008-01-09
do you think i can change from Session to ViewState?
 
when i do Session[keys.Current.ToString()] then its loading my class and class has 53 public properties

but i dont want to load the class into session keys, is there a way i can change to ViewState or is there a way to have different approach?

protected void dg_PreRender(object sender, EventArgs e)
    {
        IEnumerator keys = Session.Contents.GetEnumerator();
       
        if (Session.Count > 0)
        {
            while (keys.MoveNext())
            {
                string value = Convert.ToString((Session[keys.Current.ToString()]));
                if (value.Substring(0, 1) == dg.MasterTableView.CurrentPageIndex.ToString())
                {
                    foreach (GridDataItem dataItem in dg.MasterTableView.Items)
                    {
                        CheckBox box = (CheckBox)dataItem["TemplateColumn"].FindControl("checkBox1");
                        string clientID = value.Substring(2, (value.Length - 7));
                        if (box.ClientID == clientID)
                        {
                            box.Checked = true;
                        }
                    }
                }
            }
        }
    }
0
Comment
Question by:Islam1424
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 11
  • 9
24 Comments
 
LVL 8

Expert Comment

by:sabeesh
ID: 17896091
if possible create a class with keys are the the properties and assigin values to this class and set this class as the viewstate.
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17897525
You need to be careful what you store in ViewState.  It is carried along with the page in a UTF-16, Base-64 encoded text.  It is meant for light-weight storage, as the page response goes down drastically when more and more things are stored in the ViewState.

Bob
0
 

Author Comment

by:Islam1424
ID: 17898097
i want to modify the above code, is that possible?

what is heppaning is:

its loading my clsUser in the session context and may be this is due to i'm using
((Session[keys.Current.

is there a way to find why is is it loading my class in to session context?
0
Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

 
LVL 96

Expert Comment

by:Bob Learned
ID: 17898156
What are you looking to store in Session variables?

Bob
0
 

Author Comment

by:Islam1424
ID: 17898753
is there a way i can use dictionary instead of session? i haven't use dictionary before so i have not clue how i can replace to it.

actually, i have a data grid with check box so I'm storing how many check box user have checked.
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17898797
Sure, you could use Dictionary, but if you need to persist it, then it would need to be stored in the Session.

Bob
0
 

Author Comment

by:Islam1424
ID: 17898914
you mean only session have to use here?, no other way?
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17899002
Is your page going to post back?  If not, then you can use the Dictionary without worry.  But, if it does, then you need to store the Dictionary in the Session:

    Session["CheckedList"] = dictionaryChecked;

Bob
0
 

Author Comment

by:Islam1424
ID: 17899066
Thanks Bob

but how do i use dictionary ?, i dont know how to use dictionary

can you show me an example pls.
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17899096
Something like this:

using System.Collections.Specialized;

StringDictionary _dictionary = new StringDictionary();

_dictionary.Add(key, value);

Bob
0
 

Author Comment

by:Islam1424
ID: 17899125
is there a way you can modify my below code to dictionary? please :)


protected void dg_PreRender(object sender, EventArgs e)
    {
        IEnumerator keys = Session.Contents.GetEnumerator();
       
        if (Session.Count > 0)
        {
            while (keys.MoveNext())
            {
                string value = Convert.ToString((Session[keys.Current.ToString()]));
                if (value.Substring(0, 1) == dg.MasterTableView.CurrentPageIndex.ToString())
                {
                    foreach (GridDataItem dataItem in dg.MasterTableView.Items)
                    {
                        CheckBox box = (CheckBox)dataItem["TemplateColumn"].FindControl("checkBox1");
                        string clientID = value.Substring(2, (value.Length - 7));
                        if (box.ClientID == clientID)
                        {
                            box.Checked = true;
                        }
                    }
                }
            }
        }
    }
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17899151
You only need this For block:

                    foreach (GridDataItem dataItem in dg.MasterTableView.Items)
                    {
                        CheckBox box = (CheckBox)dataItem["TemplateColumn"].FindControl("checkBox1");
                        string clientID = value.Substring(2, (value.Length - 7));
                        if (box.ClientID == clientID)
                        {
                            box.Checked = true;
                            _dictionary.Add(clientID, box);
                        }
                    }

Bob
0
 

Author Comment

by:Islam1424
ID: 17899420
Error      1      The name 'value' does not exist in the current context       

      protected void RadGrid1_PreRender(object sender, EventArgs e)
    {      
            foreach (GridDataItem dataItem in RadGrid1.MasterTableView.Items)
            {
                CheckBox box = (CheckBox)dataItem["TemplateColumn"].FindControl("checkBox1");
                string clientID = value.Substring(2, (value.Length-7));                        
                if(box.ClientID==clientID)
                {
                    box.Checked = true;
                    _dictionary.Add(clientID, box);
                }
            }
    }
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17905448
Describe to me with words what this For loop is doing, please.

Bob
0
 

Author Comment

by:Islam1424
ID: 17918354
Bob,

i'm using datagrid with checkboxes so i want to maintain what i have checked even thou the user change the page numbers of datagrid.

thanks.
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17922421
What is the DataGrid bound to?

Bob
0
 

Author Comment

by:Islam1424
ID: 17932085
datagrid bound to a DataSet
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17932143
I would suggest adding a column for the check boxes to the DataTable, instead of what you have been trying to do.

Bob
0
 

Author Comment

by:Islam1424
ID: 17932980
can you throw me some sample lines please?

thanks
0
 
LVL 96

Accepted Solution

by:
Bob Learned earned 125 total points
ID: 17954986
Here is one way:

Adding a CheckBox column to your DataGrid
http://www.codeproject.com/aspnet/datagridcheckbox.asp?df=100&forumid=4431&exp=0&fr=26

Bob
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 18131580
I believe that I answered the question, as ultimately asked on 11/13/2006.

Bob
0

Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

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

I recently went through the process of creating a Calendar Control of events with the basis of using a database to keep track of the dates that are selectable, one requirement was to have the selected date pop-up in a simple lightbox.  At first this…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…

688 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