Link buttons don't fire ItemCommand in repeater control, is this a bug?

S

Stan

I cannot make the link buttons fire ItemCommand from
repeater control.

Here is the code:

<asp:repeater id=rptLetters runat="server">
<itemtemplate>
<asp:linkbutton id="lnkLetter"
runat="server" commandname="Filter"
CommandArgument='<%#
DataBinder.Eval(Container, "DataItem.Letter")%>'>
<%# DataBinder.Eval
(Container, "DataItem.Letter")%>
</asp:linkbutton>
</itemtemplate>
</asp:repeater>

In code-behind I've got:

this.rptLetters.ItemCommand += new
System.Web.UI.WebControls.RepeaterCommandEventHandler
(this.OnLetterClicked);

and

protected void OnLetterClicked(object source,
System.Web.UI.WebControls.RepeaterCommandEventArgs e)
{
if (e.CommandName == "Filter")
{
letterFilter = (string)
e.CommandArgument;
PopulateGrid();
}
}

and it is does not fire the click event!


However, if I replace link button with regular buttons

<asp:repeater id=rptLetters runat="server">
<itemtemplate>
<asp:button id="lnkLetter" runat="server"
commandname="Filter"
CommandArgument='<%#
DataBinder.Eval(Container, "DataItem.Letter")%>'
Text='<%# DataBinder.Eval
(Container, "DataItem.Letter")%>' />
</itemtemplate>
</asp:repeater>

exactly the the same code works fine.

I am using 1.0.3705 framework.

Is this a bug?

Thanks,

-Stan
 
J

Jacob Yang [MSFT]

Hi Stan,

Based on my research and experience, the following information is useful to
you. Please refer to it carefully.

DataList.ItemCommand Event
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/
frlrfsystemwebuiwebcontrolsdatalistclassitemcommandtopic.asp
"...
The ItemCommand event is raised when any button is clicked in the DataList
control and is commonly used when you have a button control with a custom
CommandName value.
...
The following example demonstrates how to specify and code a handler for
the ItemCommand event to select an item from the DataList control.
...
<ItemTemplate>

<asp:LinkButton id="SelectButton"
Text="Select"
CommandName="Select"
runat="server"/>

Item <%# DataBinder.Eval(Container.DataItem, "Item") %>

</ItemTemplate>
..."

If I have misunderstood your concern, please feel free to let me know.

Best regards,

Jacob Yang
Microsoft Online Partner Support
Get Secure! ¨C www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.
 
S

Shawn Mehaffie

Since this is in a data repeater the code fires the ItemCommand for the data
repeater instead of the LinkButton. This sounds strange but really works
out becuase sometime you can get away without sending any parameters, if the
data you need is in on DataRepeater Item.

To see if this is happening create an event handler for the Repeater control
and put a Messagebox.Show as the only line of code. The everytime you click
the link the message should popup. You can even sent a breakpoint on the
MessageBox.Show and view what data you can access from the datarepeater
using the e.Item object. I have used this numerous times, but the first
time it was very frustrating learning how to extract data from the
datarepeater. Feel free to send me any more questions you might have.

S. Shawn Mehaffie
(e-mail address removed)
 

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

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,045
Latest member
DRCM

Latest Threads

Top