Solved

Add new Attributes at runtime to Repeater control

Posted on 2007-11-16
8
2,859 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:Tom Knowlton
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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:Tom 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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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
 
LVL 5

Author Comment

by:Tom 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:Tom 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:Tom 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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
jquery datatables, asp.net MVC 9 60
Error running webpage local computer 7 26
ASP.net Markup for Sub Menu 2 42
c#, datatable, aspx 4 19
I recently went through the process of creating a Calendar Control of events with the basis of using a database to keep track of the dates that are selectable, one requirement was to have the selected date pop-up in a simple lightbox.  At first this…
Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

756 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