problems with listbox id changing within datagrid control

P

Paul Reilly

Hi,

I've created a datagrid that has edititemtemplates. One of the
edititemtemplate columns is actually two listboxes that are bound from
sql calls when the edit button is clicked - they represent a
"container" structure, where you can move elements from one side to
the other. I do not know of any server side .net "container" options
so I am implementing it client side javascript. I've done it before
and it's fairly straight forward - you have buttons that just call
javascript functions passing in the select box's name's (id's).

The problem I am having is that when I have these listboxes within the
datagrid, their names are changed in the compiled output. This is a
simplified version of the edititemtemplate in question:

<EditItemTemplate>
<asp:ListBox RUNAT="server" id="available"
DataValueField="name"
DataTextField="name"
MULTIPLE
DataSource=<%# FillLeft((int)DataBinder.Eval(Container.DataItem,"id"))%>
/>

<INPUT TYPE="BUTTON" VALUE="&gt;&gt;"
onClick="setAll('compareForm','available',true);
transfer('compareForm','available','compareto',35)"><BR>

<asp:ListBox RUNAT="server"
id="compareto"
DataValueField="name"
DataTextField="name" MULTIPLE
DataSource=<%# FillRight((int)DataBinder.Eval(Container.DataItem,"id"))%>
/>
</EditItemTemplate>

This column resides within the "resultsDataGrid" dataGrid.

If you notice the input box in the middle, it calls javascript
functions that pass the listbox name as parameters. However when I
view this page in a browser, the name of the available select box is
not "available" it is something dynamic such as
"resultsDataGrid:_ct12:available". How can I pass the real select name
to my javascript functions considering .net is setting it dynamically.

Thanks for the help!

Paul
 
R

Rick Spiewak

You could create the javascript function for each item dynamically in the
code behind during the itemcreated event (adding the attribute) knowing what
the rendered ID will be (it won't have that value while your code is
running, however!). Or, you could put your manipulation code in the
codebehind on the click event for the button.
 
P

Paul Reilly

Thanks for your thoughts - my .NET knowledge is minimal though and I'm
having problems figuring out how to reference the names for the
listboxes - I could just pass an asp variable into the javascript
functions in the aspx, so at runtime the compiled code had the correct
variables in the function call, but I'm not sure how to access that
property. Any ideas? Thanks.

Paul
 
R

Rick Spiewak

During the itemcreated event, you will be able to compute the runtime ids of
the controls, and attach javascript to the button in the item as needed,
using the attributes collection of the button and adding an onclick
attribute. If you use view source on your page, you should be able to figure
out how to compute the runtime id based on the item index. (If I had code
that did this, I'd give it to you, this "Socratic" method isn't my usual
style, but it should get you there. Just implement the itemcreated event and
set a breakpoint in it, and play around...)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top