Solved

Add new Attributes at runtime to Repeater control

Posted on 2007-11-16
8
2,827 Views
Last Modified: 2012-06-27
After the datasource has been assigned to a repeater control, is it possible, in the C# code behind, to add attributes to certain LinkButtons (the repeater is a list of LinkButtons)?

LinkButton.Attributes.Add("onClick", "return confirm('Are you sure you want to delete this item (and sub items if this is a folder)?');");


but only on certain ones, not on all of them


Thanks!
0
Comment
Question by:knowlton
  • 4
  • 4
8 Comments
 
LVL 16

Expert Comment

by:McExp
ID: 20302712
The simplest solution would be to replace your repeater of LinkButtons into a bullited list of LinkButtons, this will enable you to (from server side code) itterate over the BulitedList Controls item collection, see below for an example: -


    <asp:BulletedList ID="BulletedList1" runat="server" DisplayMode="LinkButton">
    </asp:BulletedList>
0
 
LVL 5

Author Comment

by:knowlton
ID: 20304381
As long as I could still build it from a database that would be fine.

Not very familiar with a bulleted list or the  advantages over a repeater.

Why wouldn't a repeater work?
0
 
LVL 16

Expert Comment

by:McExp
ID: 20305533
Apologies, The BullitedList will not give you the functionality you require. It does give you a neat way of creating a list of link buttons however it doens't expose them to allow you to apply an on click function.

I'll work up an example using the Repeater class.
0
 
LVL 16

Accepted Solution

by:
McExp earned 500 total points
ID: 20305590
See the code below for an example of how to get access to your LinkButton during the ItemDataBound event
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

<script runat="server">
 

    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)

    {

        string itemToProcess = e.CommandArgument.ToString();

        //Now Do Something?

    }

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)

    {

        LinkButton lbTempTest = e.Item.FindControl("lbTesting") as LinkButton;

        lbTempTest.Attributes.Add("onClick", "return confirm('Are you sure you want to delete this item (and sub items if this is a folder)?');");

    }
 

</script>
 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Untitled Page</title>

</head>

<body>

    <form id="form1" runat="server">

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Main %>" ProviderName="<%$ ConnectionStrings:Main.ProviderName %>" SelectCommand="SELECT [TeamName], [TeamId] FROM [Teams]"></asp:SqlDataSource>

    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" OnItemCommand="Repeater1_ItemCommand" OnItemDataBound="Repeater1_ItemDataBound">

    <ItemTemplate>

    <asp:LinkButton ID="lbTesting" CommandArgument='<%# Eval("TeamId") %>' runat="server"><%# Eval("TeamName") %></asp:LinkButton>

    </ItemTemplate>

    </asp:Repeater>

    </form>

</body>

</html>

Open in new window

0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 5

Author Comment

by:knowlton
ID: 20306676
McExp:

Does your solution allow me to apply the Attribute to specific rows of the repeater?
0
 
LVL 16

Expert Comment

by:McExp
ID: 20307460
Yes, what is your criteria?

All you need to do is add a conditional statment around the  "lbTempTest.Attributes.Add" statment
0
 
LVL 5

Author Comment

by:knowlton
ID: 20308269
I think my criteria will be based on LinkButton "Text"

If "LinkButton.Text == <some value>" then add attribute

That sort of thing.

I think what you have already provided me should be enough!!

I'll know for sure when I get in to work on Monday.

Tom
0
 
LVL 5

Author Comment

by:knowlton
ID: 20316526
For my future reference:

    protected void FirstUseStepsStatus_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        LinkButton lbTempTest = e.Item.FindControl("LinkButtonStep") as LinkButton;
        if (lbTempTest != null)
        {
            if (lbTempTest.CommandArgument == "2")
            {
                lbTempTest.Attributes.Add("onClick", "return confirm('Do you want to add another Debt Item?');");
            }
        }
    }
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In .NET 2.0, Microsoft introduced the Web Site.  This was the default way to create a web Project in Visual Studio 2005.  In Visual Studio 2008, the Web Application has been restored as the default web Project in Visual Studio/.NET 3.x The Web Si…
User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
This is a video describing the growing solar energy use in Utah. This is a topic that greatly interests me and so I decided to produce a video about it.
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

914 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now