Sunday 15 February 2015

vb.net - How to get value from dynamically created texboxes? -



vb.net - How to get value from dynamically created texboxes? -

im new here , im having problem vb.net code. have dynamically created few textboxes on panel, , want code after submitting form save values database. problem cannot find way how grab values texboxes. tried found on net still getting error message "object reference not set instance of object". can advice me doing wrong. here code how created texboxes:

integer = 0 cntpos -1 dim txtjobto textbox = new textbox() txtjobto.id = "txtjobto_" & jobid dim label label = new label() label.text = pospanel.rows(i).item("position") pnlcontainer.controls.add(label) pnlcontainer.controls.add(new literalcontrol("</td><td>")) pnlcontainer.controls.add(txtjobto) next

this line of code shows texboxes on page

<tr bgcolor="#ffcc99"><td colspan="4"> <asp:panel id="pnlcontainer" runat="server" visible="true"></asp:panel></td></tr> <tr><td colspan='6' align='center'> <asp:button id="cmdsave" text="save" tooltip="cmdsave" commandargument="cmdsave_click" runat="server" /></td></tr>

and part of code should save data

sub cmdsave_click(byval sender system.object, e eventargs) handles cmdsave.click ... integer = 0 cntposins -1 dim strto textbox = new textbox() posid = posins.rows(i).item("id_pos") strto.text =ctype(pnlcontainer.findcontrol("txtjobto_" & posid.tostring()),textbox).text .... 'insert database next

i error message on line strto.text =ctype(pnlcontainer.findcontrol("txtjobto_" & posid.tostring()),textbox).text can please give me advice on how prepare this? proper way read value dynamically created textboxes in situation? give thanks you

there 2 aspects think. dynamic controls bit of minefield , can take while understand.

a) create sue create dynamic controls , add together them page during oninit or createchildcontrols. access value in event handler or during onprerender...otherwise have problem using standard textbox.text property value. it's tricky using dynamic controls because values not nowadays whole page lifecycle without inspecting page.request property.

b) personally, when dynamically create input elements, don't "let go" of them , rely on findcontrol handle onto them me.

when create controls dynamically, store them in e.g. lovely dictionary(of string, textbox) accessible rest of code, e.g. property or fellow member variable.

' lookup declared outside of consuming methods accessible both private dictcontrolslookup new dictionary(of string, textbox) sub yoursubname integer = 0 cntpos -1 dim txtjobto textbox = new textbox() txtjobto.id = "txtjobto_" & jobid dim label label = new label() label.text = pospanel.rows(i).item("position") pnlcontainer.controls.add(label) pnlcontainer.controls.add(new literalcontrol("</td><td>")) pnlcontainer.controls.add(txtjobto) dictcontrolslookup.add(txtjobto.id, textjobto) next end sub sub cmdsave_click(byval sender system.object, e eventargs) handles cmdsave.click ... integer = 0 cntposins -1 dim strto textbox = new textbox() posid = posins.rows(i).item("id_pos") dim ctlid string = "txtjobto_" & posid.tostring() if dictcontrolslookup.containskey(ctlid) strto.text = dictcontrolslookup(ctlid).text end if .... 'insert database next end sub

alternatively iterate dictcontrolslookup.values collection in save_click access text boxes :-)

vb.net

No comments:

Post a Comment