?
Solved

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

Posted on 2006-11-07
24
Medium Priority
?
536 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
  • 11
  • 9
21 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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
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 500 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

Vote for the Most Valuable Expert

It’s time to recognize experts that go above and beyond with helpful solutions and engagement on site. Choose from the top experts in the Hall of Fame or on the right rail of your favorite topic page. Look for the blue “Nominate” button on their profile to vote.

Question has a verified solution.

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

This article discusses the ASP.NET AJAX ModalPopupExtender control. In this article we will show how to use the ModalPopupExtender control, how to display/show/call the ASP.NET AJAX ModalPopupExtender control from javascript, how to show/display/cal…
One of the pain points with developing AJAX, JavaScript, JQuery, and other client-side behaviors is that JavaScript doesn’t allow for cross domain request for pulling content. For example, JavaScript code on www.johnchapman.name could not pull conte…
This video shows how to quickly and easily deploy an email signature for all users in Office 365 and prevent it from being added to replies and forwards. (the resulting signature is applied on the server level in Exchange Online) The email signat…
With just a little bit of  SQL and VBA, many doors open to cool things like synchronize a list box to display data relevant to other information on a form.  If you have never written code or looked at an SQL statement before, no problem! ...  give i…
Suggested Courses
Course of the Month13 days, 22 hours left to enroll

807 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