Solved

datagrid

Posted on 2006-11-02
19
2,740 Views
Last Modified: 2010-05-18
i have a datagrid and in that i have checkbox, everything is working fine except i found one thing that really bothering me.

when i check the checkbox like (1 or 2 or 5) and i click on save button then it gives me the value of whatever i have checked which is great but you will be only able to get the value of a current page not the next page

what i mean by that.

let say page one, i have check 3 checkbox and i go to page two and check 2 more checkbox so total is 5 correct, so when i hit the save button it give me the values for 2 not total 5 ? because it look for the current page only.

so my question is: how do i loop through all the RadGrid pages and get whatever is checked?

i'm using something like this now...

 foreach (DataGridItem item in dg.Items)
        {
            HtmlInputCheckBox chkBx = (HtmlInputCheckBox)item.FindControl("EmpId");
            if (chkBx != null && chkBx.Checked)
            {
               Response.Write(chkBx.Value + "<br>");
            }
        }
0
Comment
Question by:service2001
19 Comments
 

Author Comment

by:service2001
ID: 17861039

have a datagrid which has many pages (10 rows per page) and when I loop through the rows, I only get 10 rows (the rows that are currently showed in the current page) How can I get the total number of rows in all the pages?

hope i'm clear to my quesiton
0
 
LVL 25

Expert Comment

by:nauman_ahmed
ID: 17861121
You will need to write code so that the values for the checkbox is retained during postbacks. Take a look at the following article:

Persisting checked state across pages in a DataGrid
http://www.codeproject.com/aspnet/CheckStatePersisting.asp

--Nauman.
0
 

Author Comment

by:service2001
ID: 17861258
i have read that  and i guess my question is more into grabbing the check-box checked.

have a data-grid which has many pages (10 rows per page) and when I loop through the rows, I only get 10 rows (the rows that are currently showed in the current page) How can I get the total number of rows in all the pages?
0
 
LVL 25

Expert Comment

by:nauman_ahmed
ID: 17861356
just noticed: you are using HtmlInputCheckbox rather than using <asp:CheckBox>. For HTML controls being used in dg, you will need to have runat=server attribute in order to retrieve the value on runtime. I will recommend you change Html checkbox to asp:CheckBox controls. See if it works.

--Nauman.

0
 

Author Comment

by:service2001
ID: 17861506
thats my old code i was using and i a have <asp:checkbox......

 foreach (DataGridItem item in dg.Items)
        {
            CheckBox box = (CheckBox)item["TemplateColumn"].FindControl("checkBox1");
            if (box.Checked == true)
            {
                //get the checked orderid
                object _OrderID = dataItem["un_OrderID"].Text;
            }
           
        }

 still i'm getting only check box from the current page.
0
 
LVL 25

Expert Comment

by:nauman_ahmed
ID: 17861566
Make sure that you have asp:checkbox in datagrid column and try the following code:

foreach (DataGridItem item in dg.Items)
        {
            foreach(Control c in item.Cells[CHECKBOX_COLUMN_INDEX].Controls)
            if (c.GetType() == TypeOf(CheckBox))
            {
            CheckBox box = (CheckBox)c;
            if (box.Checked == true)
            {
                //get the checked orderid
                object _OrderID = dataItem["un_OrderID"].Text;
            }
            }
        }

--Nauman.
0
 

Author Comment

by:service2001
ID: 17861831
salam ahmed,

I'm getting few errors now:

    public void View_Selected(object sender, EventArgs e)
    {
         foreach (DataGridItem item in dg.Items)
         {
             foreach (Control c in item.Cells[0].Controls)
                 if (c.GetType() == TypeOf(CheckBox))
                 {
                     CheckBox box = (CheckBox)c;
                     if (box.Checked == true)
                     {
                         //get the checked orderid
                         object _OrderID = dataItem["un_OrderID"].Text;
                     }
                 }
         }
}

errors://

Error      1      The name 'TypeOf' does not exist in the current context      

Error      2      'System.Web.UI.WebControls.CheckBox' is a 'type' but is used like a 'variable'

Error      3      The name 'dataItem' does not exist in the current contet


 <asp:DataGrid ID="dg" runat="server" AllowPaging="True" AllowSorting="True" DataSourceID="AccessDataSource1" OnPageIndexChanged="dg_PageIndexChanged" PageSize="5"
   >
            <Columns>
                <asp:TemplateColumn  HeaderText="ProductName" SortExpression="ProductName">
                    <HeaderTemplate>
                                          
<input type="checkbox" id="checkAll" onclick="CheckAll(this);" runat="server" name="checkAll">
</HeaderTemplate>
<ItemTemplate>
    <!-- <input type="checkbox" runat="server" id="EmpId1" value='<%# Bind("Discontinued") %>' checked=<%# DataBinder.Eval(Container.DataItem, "Discontinued") %> onclick="CheckChanged();" unselectable=off name="EmpId" />&nbsp; -->
    <asp:CheckBox  runat="server"  id="EmpId"  onclick="CheckChanged();"   />
                              </ItemTemplate>
                </asp:TemplateColumn>
               
            </Columns>
     
        </asp:DataGrid></td>
            </tr>
             
            <tr>
                <td style="width: 76px">
        <asp:Button ID="selBtn" OnClick="View_Selected" runat="server" Text="Show Selection" /></td>
0
 
LVL 25

Expert Comment

by:nauman_ahmed
ID: 17862146
w/s :)

One change: In datagrid, use <input type=CheckBox runat=server value='<%#DataBinder.Eval(Container.DataItem,"un_OrderID")%>'> instead of asp:CheckBox. This is needed since asp:CheckBox do not have a value attribute. You can add it on runtime but it is time consuming.

 foreach (DataGridItem item in dg.Items)
         {
             foreach (Control c in item.Cells[0].Controls)
                 if (c.GetType() == typeOf("HtmlInputCheckBox"))
                 {
                     HtmlInputCheckBox box = (HtmlInputCheckBox)c;
                     if (box.Checked == true)
                     {
                         //get the checked orderid
                         object _OrderID = box.Value;
                     }
                 }
         }

--Nauman.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:service2001
ID: 17862216
>> if (c.GetType() == typeOf("HtmlInputCheckBox"))

error:
Error      1      The name 'typeOf' does not exist in the current context       
0
 
LVL 25

Expert Comment

by:nauman_ahmed
ID: 17862515
woops $$ typeOf should be typeof

--Nauman.
0
 

Author Comment

by:service2001
ID: 17862615
i realized after i post but still getting the error
 
0
 
LVL 25

Expert Comment

by:nauman_ahmed
ID: 17862755
What is the error?

--Nauman.
0
 

Author Comment

by:service2001
ID: 17864063
Error      1      Type expected       
Error      2      ;  
Error      3      Invalid expression term ')'

      
this is what the code i have, same exact code you have suggested

 foreach (DataGridItem item in dg.Items)
         {
             foreach (Control c in item.Cells[0].Controls)
                 if (c.GetType() == typeof("HtmlInputCheckBox")) <<<<ERROR HERE
                 {
                     HtmlInputCheckBox box = (HtmlInputCheckBox)c;
                     if (box.Checked == true)
                     {
                         //get the checked orderid
                         object _OrderID = box.Value;
                     }
                 }
         }


0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17866092
              if (c.GetType() == typeof(HtmlInputCheckBox))

Bob
 
0
 

Author Comment

by:service2001
ID: 17866229
the error is fixed but again... its reading the checkbox from the current page only and if i go back to previous page then i dont see my checkbox is checked :(
0
 
LVL 1

Accepted Solution

by:
DarthMod earned 0 total points
ID: 18461905
PAQed with points refunded (125)

DarthMod
Community Support Moderator
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Sometimes in DotNetNuke module development you want to swap controls within the same module definition.  In doing this DNN (somewhat annoyingly) swaps the Skin and Container definitions to the default admin selections.  To get around this you need t…
Today is the age of broadband.  More and more people are going this route determined to experience the web and it’s multitude of services as quickly and painlessly as possible. Coupled with the move to broadband, people are experiencing the web via …
Migrating to Microsoft Office 365 is becoming increasingly popular for organizations both large and small. If you have made the leap to Microsoft’s cloud platform, you know that you will need to create a corporate email signature for your Office 365…
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…

910 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

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now