I have a ListBox on my EditForm that is populated based on the CommandArgument from the ItemCommand. The data is being accessed, but when I go to add the data to the ListBox, the control isn't being found. Here's what I have:
the ListBox is null, the control is named "lstMembers" (I already checked that) my suspicion is something in the previous line of code. When I put the same two lines in another block (different command name) it works fine, so I think it might have something to do with the fact that the control itself isn't loaded yet. Can someone confirm/clarify this for me, and if so give me a work around?
if (e.CommandName == "Edit") { GridEditFormItem item = (GridEditFormItem)(e.Item as GridDataItem).EditFormItem; ListBox lb = (ListBox)item.FindControl("lstMembers");the ListBox is null, the control is named "lstMembers" (I already checked that) my suspicion is something in the previous line of code. When I put the same two lines in another block (different command name) it works fine, so I think it might have something to do with the fact that the control itself isn't loaded yet. Can someone confirm/clarify this for me, and if so give me a work around?
5 Answers, 1 is accepted
0
Elliott
Top achievements
Rank 2
answered on 02 Apr 2012, 04:59 PM
the listbox isn't in the item - it's actually in a table cell within the item
you need to find the right tablecell (column) then pull your listbox out of that
I'm not going to include code because I "cheat" - reference the tablecell by hardcoding the index
you need to find the right tablecell (column) then pull your listbox out of that
I'm not going to include code because I "cheat" - reference the tablecell by hardcoding the index
0
Kyle
Top achievements
Rank 1
answered on 02 Apr 2012, 05:01 PM
If that's the case then why does it work elsewhere? i.e. why does it work in the "View" command but not the "Edit?" And could you post some of your code so I can kinda see the general idea of what you do?
0
Elliott
Top achievements
Rank 2
answered on 02 Apr 2012, 05:10 PM
can't answer that (sorry)
it's a dumb question but...
when the CommandName is "Edit" what is the type of the e.Item?
I would still try something like
it's a dumb question but...
when the CommandName is "Edit" what is the type of the e.Item?
I would still try something like
if (e.CommandName == "Edit" && typeof e.Item is EditFormItem) // syntax may be wrong, I'm a VB programmer{ GridEditFormItem item = (GridEditFormItem)(e.Item as GridDataItem).EditFormItem; TableCell TC = item.TableCell[5]; ListBox lb = (ListBox)TC.FindControl("lstMembers");}0
Kyle
Top achievements
Rank 1
answered on 02 Apr 2012, 05:39 PM
Tried that, still didn't work. item doesn't have a TableCell[] property, so I had to just use Cells. That might just be a VB/C# thing though.
TC, which I set to be Cells[1] (corresponds to the location of the form in my Grid) appears to have no controls, as confirmed in a breakpoint. e.Item is a GridDataItem, even when the CommandName is Edit, that's why I have to 1) extract the EditFormItem, and 2)cast it as a GridEditFormItem.
TC, which I set to be Cells[1] (corresponds to the location of the form in my Grid) appears to have no controls, as confirmed in a breakpoint. e.Item is a GridDataItem, even when the CommandName is Edit, that's why I have to 1) extract the EditFormItem, and 2)cast it as a GridEditFormItem.
0
Shinu
Top achievements
Rank 2
answered on 03 Apr 2012, 05:26 AM
Hello Kyle,
Since the EditCommand is too early to access the edit form items, you can access the items in the ItemDataBound event of the grid as shown below.
C#:
Thanks,
Shinu.
Since the EditCommand is too early to access the edit form items, you can access the items in the ItemDataBound event of the grid as shown below.
C#:
protected void grid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e){ if (e.Item is GridEditFormItem && e.Item.IsInEditMode) { GridEditFormItem item = (GridEditFormItem)e.Item; RadListBox list = (RadListBox)item.FindControl("lstMembers"); }}Thanks,
Shinu.