asp.net - Edit Nested DataList error -
i able create beautiful, 4 generation nested datalist (parent, child, grandchild, greatgrandchild) using dataset populated @ page_load sub called data_binder(). i'm pleased how , correctly data displays.
however, when click on edit button in greatgrandchild datalist, info should show in edititemtemplate disappears rather allowing me edit. looks @ initial display:
jul 2013 stat forecast sales brand 100 116 drop 80 % testing insert part number mix dp adj sp 8521150 30% 8 8 edit 8521148 20% 5 5 edit 8523458 10% 3 3 edit 8524400 7% 2 2 edit 8524276 6% 2 2 edit 8523165 6% 2 2 edit 8523985 5% 1 2 3 edit 8523456 5% 1 1 edit 8524403 4% 1 1 edit 8524399 4% 1 1 edit 8523987 3% 1 1 edit 8524402 1% 0 0 edit
clicking edit makes become this:
jul 2013 stat forecast sales brand 100 116 drop 80 % testing insert
i'm including getchildrelation, data_binder, , edit_command subs can see triggering greatgrandchild datalist. brevity, i'm not including headertemplate , itemtemplate working fine.
i continue use dataset method speed of presenting data fantastic.
any suggestions?
thanks,
rob
nested datalist snippet...
<asp:datalist id="dl_supply_plan_date_numbers_sp" runat="server" cssclass="dp_dl_supply_plan_date_numbers_sp" oneditcommand="edit_command" onupdatecommand="update_command" oncancelcommand="cancel_command" datasource='<%# getchildrelation(container.dataitem, "fam_date_grandchild")%>' > <headertemplate> ... </headertemplate> <itemtemplate> ... </itemtemplate> <edititemtemplate> <asp:label id="lbl_dat_dp_date_numbers_hidden" runat="server" cssclass="hidden" text='<%#container.dataitem("dat_dp_date")%>' /> <asp:label id="lbl_txt_part_num_hidden" runat="server" cssclass="hidden" text='<%#container.dataitem("txt_part_num")%>' /> <asp:label id="lbl_txt_family_part_num" runat="server" cssclass="sp_family_member" text='<%#databinder.eval(container.dataitem,"txt_family_part_num")%>' /> <asp:label id="lbl_num_mix_weight" runat="server" cssclass="sp_family_member sp_mix" text='<%#databinder.eval(container.dataitem,"num_mix_weight","{0:0%}")%>' /> <asp:label id="lbl_dp_unconstrained" runat="server" cssclass="sp_family_member sp_mix dp" text='<%# display_supply_plan(eval("num_mix_weight"),eval("num_dp_number"),eval("num_brand_number"),0) %>' /> <asp:textbox id="tbx_num_sp_adjust" runat="server" cssclass="sp_family_member sp_mix sp-adjust" text='<%#databinder.eval(container.dataitem,"num_sp_adjust")%>' /> <asp:label id="lbl_sp" runat="server" cssclass="sp_family_member sp_mix sp" text='<%# display_supply_plan(eval("num_mix_weight"),eval("num_dp_number"),eval("num_brand_number"),eval("num_sp_adjust")) %>' /> <br /> <asp:linkbutton id="lnkupdate" runat="server" commandname="update">update</asp:linkbutton> <asp:linkbutton id="lnkcancel" runat="server" commandname="cancel">cancel</asp:linkbutton> </edititemtemplate> </asp:datalist>
code behind...
protected function getchildrelation(dataitem object, relation string) dataview dim drv datarowview = trycast(dataitem, datarowview) if drv isnot nothing return drv.createchildview(relation) else return nothing end if end function sub data_binder() dim strconn string = system.configuration.configurationmanager.connectionstrings("testconnectionstring").connectionstring dim cat_fam_filter string = "where txt_family_category '" & ddl_family_category_name.selectedvalue & "' " _ & "and txt_family_name '" & ddl_family_name.selectedvalue & "'" dim strsql string = "select * tbl_family " & cat_fam_filter & " order txt_family_category, txt_family_name ; " _ & "select * func_display_demand_plan() " & cat_fam_filter & " order dat_dp_date; " _ & "select * func_display_demand_plan() " & cat_fam_filter & " order dat_dp_date; " _ & "select * func_display_supply_plan() " & cat_fam_filter & " " _ & "order dat_dp_date, num_mix_weight desc " dim conn new sqlconnection(strconn) dim da new sqldataadapter(strsql, conn) da.tablemappings.add("family1", "dates") da.tablemappings.add("family2", "demand") da.tablemappings.add("family3", "supply") _ds = new dataset() da.fill(_ds, "family") _ds.relations.add("fam_date_parent", _ds.tables("family").columns("txt_family_name"), _ds.tables("dates").columns("txt_family_name")) _ds.relations(0).nested = true _ds.relations.add("fam_date_child", _ds.tables("dates").columns("famdatekey"), _ds.tables("demand").columns("famdatekey")) _ds.relations(1).nested = true _ds.relations.add("fam_date_grandchild", _ds.tables("demand").columns("famdatekey"), _ds.tables("supply").columns("famdatekey"), false) _ds.relations(2).nested = true dl_supply_plan.datasource = _ds.tables("family") dl_supply_plan.databind() end sub sub edit_command(sender object, e datalistcommandeventargs) dim dl_target datalist = directcast(sender, datalist) dl_target.edititemindex = e.item.itemindex dl_target.databind() end sub
since greatgrandchild being populated via datasource using container.dataitem grandchild datalist, attempt databind greatgrandchild datalist come empty. wasn't populating entire dataview appropriate datarowview.
my solution: create dataset parent, child, , grandchild , separate dataset greatgrandchild. greatgrandchild populated via grandchild's onitemdatabound event display purposes. then, able use same databind edit, cancel, , update/insert events well. standalone , working well.
Comments
Post a Comment