adismesevic
asked on
problem with oncheckedchanged when dynamically created checkboxes
Hi,i have an editor.aspx where i have a table named sbaTable. That table is dynamically filled with rows in my code page editor.aspx.vb...On every row I have one checkbox and one textbox.. what i want to do is to disable textbox whenever checkbox on same row is checked=true!
editor.aspx.vb i have a loop that counts as many rows as i need(works fine)..
Private Sub PopulateGrid()
...create tablerow
...create tablecell "tcOk"
Dim chkOK as new checkbox
chkOK.id = "ok-" + tdindex.text
chkOK.autopostback = true
''chkOK.oncheckedchanged" doesnot exist here for some reason(OnCheckedChanged exists in designer mode)!? that is why i tried with handlern below...
addhandler chkOK.checkedchanged, adressof chk_OncheckedChanged --
tcOk.controls.add(chkOK)
...create tablecell "tcNote"
Dim txtNote as new textbox
txtNote.id = "note-" + tdindex.text
...
tcNote.controls.add(txtNot e)
...
...addrows and cells to the table mm..
End Sub
Public sub chk_OncheckedChanged(ByVal sender As Object,ByVal e As EventArgs)
Dim checkBox as checkbox = Ctype(sender, CheckBox)
Dim idString as string = checkbox.id
disable...
enable...
mm
End Sub
Problem = chk_OnCheckedChanged is never hit...can i do this the way i am trying oris there another solution??
Thanks in advance
editor.aspx.vb i have a loop that counts as many rows as i need(works fine)..
Private Sub PopulateGrid()
...create tablerow
...create tablecell "tcOk"
Dim chkOK as new checkbox
chkOK.id = "ok-" + tdindex.text
chkOK.autopostback = true
''chkOK.oncheckedchanged" doesnot exist here for some reason(OnCheckedChanged exists in designer mode)!? that is why i tried with handlern below...
addhandler chkOK.checkedchanged, adressof chk_OncheckedChanged --
tcOk.controls.add(chkOK)
...create tablecell "tcNote"
Dim txtNote as new textbox
txtNote.id = "note-" + tdindex.text
...
tcNote.controls.add(txtNot
...
...addrows and cells to the table mm..
End Sub
Public sub chk_OncheckedChanged(ByVal
Dim checkBox as checkbox = Ctype(sender, CheckBox)
Dim idString as string = checkbox.id
disable...
enable...
mm
End Sub
Problem = chk_OnCheckedChanged is never hit...can i do this the way i am trying oris there another solution??
Thanks in advance
ASKER
Hi Thanks for your answer.. i tried to create
Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
'If Not Page.IsPostBack Then
PopulateGrid()
'End If
End Sub
it doesnot help table is regenereted anyway and i can't use 'If Not Page.IsPostBack Then either because then i dont get anything back when page postsback....at the same time i must set autopostback = true for my checkbox or nothing will happen when clicked!!
Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
'If Not Page.IsPostBack Then
PopulateGrid()
'End If
End Sub
it doesnot help table is regenereted anyway and i can't use 'If Not Page.IsPostBack Then either because then i dont get anything back when page postsback....at the same time i must set autopostback = true for my checkbox or nothing will happen when clicked!!
ASKER
anyone know anything about this??..i have searched the google but cant find any solution there either!?
hmmm....did u try to enable viewstate?
ASKER
yes, i tried that too now..still not working...is there an easier way to do this with javascript?
hmm....I'll try a sample today and keep you posted on how it works - give me until the evening
ok - got it - it was PreInit not PreRender as I initially said. See a quick and dirty implementation - hopefully u get the idea.
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs)
Me.PopulateGrid()
End Sub
Protected Sub PopulateGrid()
Dim tb As New Table
Dim tr As New TableRow
Dim tc As TableCell = Nothing
tc = New TableCell
Dim chkok As New CheckBox
chkok.AutoPostBack = True
AddHandler chkok.CheckedChanged, AddressOf chk_oncheckchanged
tc.Controls.Add(chkok)
tr.Cells.Add(tc)
tb.Rows.Add(tr)
Me.form1.Controls.Add(tb)
End Sub
Protected Sub chk_oncheckchanged(ByVal sender As Object, ByVal e As System.EventArgs)
Dim chkok As CheckBox = CType(sender, CheckBox)
Response.Write("Checked: " & chkok.Checked.ToString())
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs)
Me.PopulateGrid()
End Sub
Protected Sub PopulateGrid()
Dim tb As New Table
Dim tr As New TableRow
Dim tc As TableCell = Nothing
tc = New TableCell
Dim chkok As New CheckBox
chkok.AutoPostBack = True
AddHandler chkok.CheckedChanged, AddressOf chk_oncheckchanged
tc.Controls.Add(chkok)
tr.Cells.Add(tc)
tb.Rows.Add(tr)
Me.form1.Controls.Add(tb)
End Sub
Protected Sub chk_oncheckchanged(ByVal sender As Object, ByVal e As System.EventArgs)
Dim chkok As CheckBox = CType(sender, CheckBox)
Response.Write("Checked: " & chkok.Checked.ToString())
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
ASKER
Hi, first of all thank you very much for your answers I leaned some stuff that i didnot know, but unfortunately it didnt help me...when i tried your last suggestion i got some other stuff that i couldnot avoid mm
Anyway i solved it with javascript...here is solution if anyone else woould need it....
chkOk.Attributes.Add("oncl ick", "chkChecked(document.forms [0].note_" + tdIndex.Text + ")")
<script type="text/javascript" language="JavaScript">
// functions to disable/enable dynamically created checkboxes/textboxes in tblSba
function chkChecked(obj)
{
obj.disabled = !(obj.disabled);
}
function txtChanged(chkobj, noteobj)
{
if (noteobj.value == '') {
chkobj.disabled = false;
}
else if (noteobj.value != ''){
chkobj.disabled = true;
}
}
</script>
Anyway i solved it with javascript...here is solution if anyone else woould need it....
chkOk.Attributes.Add("oncl
<script type="text/javascript" language="JavaScript">
// functions to disable/enable dynamically created checkboxes/textboxes in tblSba
function chkChecked(obj)
{
obj.disabled = !(obj.disabled);
}
function txtChanged(chkobj, noteobj)
{
if (noteobj.value == '') {
chkobj.disabled = false;
}
else if (noteobj.value != ''){
chkobj.disabled = true;
}
}
</script>
awesome.. glad u got it working!
~BC
~BC
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
HTH
~BC