monkey3
asked on
ASP.NET - keeping checkbox's state when in datagrid
PLEASE HELP ME!!!!!!!!
I am creating a datagrid and populating it dynamically, no problem, and I have embedded checkboxes in the first 2 columns.
When the user clicks a button on the page, I am iterating through the datagrid to check the value of the checkboxes.
I have no problem referencing the checkboxes, but as soon as the button is pressed, they lose state.
Can I get the values from them before the button causes postback? the rest of the fields hold their state during postback, as does any checkbox created outside the datagrid.
Their 'holdstate' (can't remember the actual name, but you get the drift) property is set to true.
Could I just bind the checkbox to the cell it sits in?
Can I handle the statechange of the checkbox? (I dont seem to be able to do it normally)
HELP!!!!!
If you can give me the working answer to any of these (or a decent work around) the points are yours, if it's particularly neat, I may give you some more...
I am creating a datagrid and populating it dynamically, no problem, and I have embedded checkboxes in the first 2 columns.
When the user clicks a button on the page, I am iterating through the datagrid to check the value of the checkboxes.
I have no problem referencing the checkboxes, but as soon as the button is pressed, they lose state.
Can I get the values from them before the button causes postback? the rest of the fields hold their state during postback, as does any checkbox created outside the datagrid.
Their 'holdstate' (can't remember the actual name, but you get the drift) property is set to true.
Could I just bind the checkbox to the cell it sits in?
Can I handle the statechange of the checkbox? (I dont seem to be able to do it normally)
HELP!!!!!
If you can give me the working answer to any of these (or a decent work around) the points are yours, if it's particularly neat, I may give you some more...
You can trigger an event upon clicking on each of the checkboxes to set a hidden field in the form..
I don't have .Net here to past you an example but I guess you got the idea.. It's derived from CJ so if you got it split between us.. :o)
I don't have .Net here to past you an example but I guess you got the idea.. It's derived from CJ so if you got it split between us.. :o)
ASKER
as far as on clicking goes, I tried that and they don't call the method. Again, if the checkbox is outside the grid it works. If I could handle the onclick, then I could simply store the checkbox values in their containing grid cells.
which method(s) can I use before the checkboxes lose their state?
and how would I make the checkboxes part of the form, as I don't know how many rows there are going to be in the grid?
which method(s) can I use before the checkboxes lose their state?
and how would I make the checkboxes part of the form, as I don't know how many rows there are going to be in the grid?
I'm afraid you may have accidentally set AutoPostBack of your checkbox to true. If it is set to true, it will cause page sumit action (the whole page reloads from the Web server!) and because it is in a DataGrid template column, its checked state won't be remembered!
ASKER
I thought the same!,
but nope.
autopostback is set to false.
it seems that no control ***within*** a grid holds state.
but nope.
autopostback is set to false.
it seems that no control ***within*** a grid holds state.
You should get their CHECKED state (not the VALUE) without problem using client-side script.
And any controls created DYNAMICALLY using client-side script must be processed using the old Form("control_name") way in order to get their states (values).
Hope this will give you some help.
And any controls created DYNAMICALLY using client-side script must be processed using the old Form("control_name") way in order to get their states (values).
Hope this will give you some help.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
On the off chance that we're missing something simple, You ARE giving your dynamically created checkboxes unique ID's right? You can verify what they're called by doing a view source on the page once it makes it to the browser.
Check
Check
ASKER
I do believe you are correct. I'd actually put this problem on the back burner due to the headache it was causing.
I was giving the check boxes unique ids. like you say, it was just the order in which things were happening.
Thank you very much for your help.
m3.
I was giving the check boxes unique ids. like you say, it was just the order in which things were happening.
Thank you very much for your help.
m3.
This suggestion might come a little late as I see that this question was posted quite some time ago.
I suspect that there was a binding being done in the pageload event on EVERY pageload.
Having an if isPostBack statement should resolved the issue and the checkboxes will retain their state as opposed as being reset as part of the binding process.
The code should look something like this:
If Not (Page.IsPostBack) Then
loadCollection()
dg_subsidiaries.DataSource = somethingCollection
dg_subsidiaries.DataBind()
Session("subsidiaries") = somethingCollection
Else
somethingCollection = Session("subsidiaries")
End If
I suspect that there was a binding being done in the pageload event on EVERY pageload.
Having an if isPostBack statement should resolved the issue and the checkboxes will retain their state as opposed as being reset as part of the binding process.
The code should look something like this:
If Not (Page.IsPostBack) Then
loadCollection()
dg_subsidiaries.DataSource
dg_subsidiaries.DataBind()
Session("subsidiaries") = somethingCollection
Else
somethingCollection = Session("subsidiaries")
End If
Either make those checkbox items part of the form, or loop through the checkboxes and store their values in a hidden field (to read them out on the server and then reset the checkboxes after loading.
Please note, I don't use ASP.Net yet so I'm not really sure.
CJ