C# – How to get Full row from repeater control in code behind

asp.netcnetrepeater

I am using repeater control to create a table with few rows and columns. On Repeater_ItemCommand I want to select clicked row in the code behind and store it in the session. How do I do this ?

When I click the row, my e.Item.DataItem is coming NULL. I am using <%# DataBinder.Eval(Container.DataItem, "FILE_NAME")%> to bind my values in asp.net

I cant use LINQ.

Thanks
Ved

Best Answer

Here is the code for the repeater

<asp:Repeater ID="Repeater1" runat="server" 
        onitemcommand="Repeater1_ItemCommand">
        <HeaderTemplate>
            <ul>
        </HeaderTemplate>
        <ItemTemplate>
        <li>
            <asp:LinkButton ID="btnDeleteComment" runat="server" Text="Delete" CommandName="DeleteComment" CommandArgument=<%#Eval("myId") %>></asp:LinkButton>
            <asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "FileName")%>'></asp:Label>
            </li>
        </ItemTemplate>
        <FooterTemplate>
        </ul>
        </FooterTemplate>
    </asp:Repeater>

Here is the code for the code behind

public partial class _Default : System.Web.UI.Page
    {
        public class myObject
        {
            public string FileName { get; set; }
            public int myId { get; set; }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            List<myObject> myList = new List<myObject>();
            myList.Add(new myObject {myId = 1, FileName = "one" });
            myList.Add(new myObject { myId = 2, FileName = "two" });
            myList.Add(new myObject { myId = 3, FileName = "three" });

            Repeater1.DataSource = myList;
            Repeater1.DataBind();
        }

        protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            Label item = (Label)e.Item.FindControl("label1");

        }
    }