Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 322
  • Last Modified:

Repeater Help

I have created a repeater that displays academic information (degrees, college, etc.).  I want the user to be able to edit the entry (entry = degree).  Right now I'm attempting to use a LinkButton and pass the EntryID as the CommandArguement.  I thought this would work but I'm getting a strange error(Unable to cast object of type 'System.EventArgs' to type 'System.Web.UI.WebControls.CommandEventArgs').

My questions:

1. Is the route I'm taking possible, if so what am I doing wrong?

2. What are your suggestions for using a repeater and passing a parameter?

Thanks.
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="odsDegreeDetails">
                <HeaderTemplate>
                    <table width="80%">
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td style="width: 60%; vertical-align: top">
                            <b>Institution: </b>
                            <%#Container.DataItem("NAME")%>
                        </td>
                        <td style="width: 40%; vertical-align: top">
                            <b>Degree: </b>
                            <%#Container.DataItem("DESCRIPTION")%>
                        </td>
                    </tr>
                    <tr>
                        <td style="width: 60%; vertical-align: top">
                            <b>Major: </b>
                            <%#Container.DataItem("MAJOR")%>
                        </td>
                        <td style="width: 40%; vertical-align: top">
                            <b>Grad. Date: </b>
                            <%#Container.DataItem("END_DATE")%>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <b>Honors:</b>
                            <%#Container.DataItem("HONOR")%>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <asp:LinkButton ID="lbEdit" runat="server" CommandArgument='<%#Container.DataItem("DegreesId")%>'  ValidationGroup="Edit" OnClick="lbEdit_Click">Edit</asp:LinkButton>
                            | <a href="delete_degree.aspx?DegreesId=<%#Container.DataItem("DegreesId")%>" onclick="confirmDelete()">
                                Delete</a>
                        </td>
                    </tr>
                </ItemTemplate>
                <SeparatorTemplate>
                    <tr>
                        <td colspan="2">
                            &nbsp;
                        </td>
                    </tr>
                </SeparatorTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>

Open in new window

0
mmeisel
Asked:
mmeisel
  • 3
  • 2
  • 2
1 Solution
 
informaniacCommented:
Why don't u use the gridview. Editing a gridview is much easier I suppose
0
 
mmeiselAuthor Commented:
That's true but I want one record to span multiple rows.  For example (-> indicates the following column)

College 1 -> Degree 1
Major 2 -> Grad Date 1
Edit | Delete

College 2 -> Degree 2
Major 2 -> Grad Date 2
Edit | Delete

etc.

If there is a way to do this with a gridview then fantastic but I thought gridviews could only display one row for each record.
0
Get your Disaster Recovery as a Service basics

Disaster Recovery as a Service is one go-to solution that revolutionizes DR planning. Implementing DRaaS could be an efficient process, easily accessible to non-DR experts. Learn about monitoring, testing, executing failovers and failbacks to ensure a "healthy" DR environment.

 
informaniacCommented:
Try placing gridview inside the repeater and bind the gridviews....

Then it might be possible to edit the gridview inside the repeater....
0
 
mmeiselAuthor Commented:
CodeCruisier:

I'm not necessarily trying to edit the information in the repeater.  What I'm trying to accomplish is to pass the CommandArguement to the event handler, in this case lbEdit_Click.  With that CommandArguement I'm going to query the database and populate another form on the page.  My problem is that I cannot read the CommandArguement in the event handler (lbEdit_Click).
0
 
CodeCruiserCommented:
That is what i meant. What you can do is bind the Tag property of the Edit button to the DegreeID instead of using CommandArguments because repeater does  not use command arguments. Then on serverside, you can access the Tag property of the button easily.
0
 
mmeiselAuthor Commented:
I'm not sure what you mean by the Tag proerty but I got it working.

I placed a LinkButton in my Repeater with a command arguement that is binded to the ID.  Then I created a OnItemCommand event handler for the Repeater.  When I did this I got the ID of the record.

<asp:LinkButton ID="lbEdit" runat="server" CommandArgument='<%#Container.DataItem("Id")%>' CommandName="Edit" ValidationGroup="Edit">Edit</asp:LinkButton>

Reference: http://www.ajaxtutorials.com/ajax-tutorials/using-repeater-to-edit-in-line-with-ajax-in-vb-net/
Protected Sub Repeater1_ItemCommand(ByVal sender As Object, ByVal e As RepeaterCommandEventArgs) Handles Repeater1.ItemCommand
 
        Label1.Text = (e.CommandArgument.ToString)
 
    End Sub

Open in new window

0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now