List Info

Thread: Retrieving values from Repeater or GridView row clicked




Retrieving values from Repeater or GridView row clicked
user name
2006-12-27 21:11:08
We have been having this problem for months and always
assumed it was
because of our somewhat complicated setup. I have just spent
almost all
of today making this into a simple example that can be
easily
reproduced and it seems like a major .NET flaw/limitation
that I was
hoping you could explain to me as it is really frustrating
me.

I just want to be able to get info for a row clicked,
whether it is a
Repeater, GridView, etc. I have tried Command Argument,
asp:HiddenField, etc. and if I use .NET it just cannot be
done as far
as I can tell. I have always had to work around it by
manually making a
normal HTML hidden form element and using Request.Form.

Is there a reason this is so darn difficult? Code is
attached, I humbly
request the error of my ways. You should be able to just
launch it in
debug, click on a delete link and see that it doesn't
retrieve the
value of the label in the row.

If I use a GridView *with an objectdatasource* I can get the
Keys
feature of the gridview to give me what I want, but that is
a very
cumbersome and limited way of getting data for a row. I want
to be able
to quickly add a button to a repeater that knows which row
it is being
clicked on.

App_Code/EntityHoliday.cs
------------------------------
using System;
using System.Data;
using System.Collections.Generic;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for EntityHoliday
/// </summary>
public class EntityHoliday
{
    private int mId;
    public int Id
    {
        get { return mId; }
        set { mId = value; }
    }

    private string mDescription;
    public string Description
    {
        get { return mDescription; }
        set { mDescription = value; }
    }

    public EntityHoliday(int pId, string pDescription)
    {
        mId = pId;
        mDescription = pDescription;
    }

    public static List<EntityHoliday>
GetEntityHolidays()
    {
        List<EntityHoliday> t = new
List<EntityHoliday>();
        t.Add(new EntityHoliday(1, "test1"));
        t.Add(new EntityHoliday(2, "test2"));
        t.Add(new EntityHoliday(3, "test3"));
        t.Add(new EntityHoliday(4, "test4"));

        return t;
    }
}

Default.aspx
---------------

<% Page Language="C#"
CodeFile="Default.aspx.cs"
Inherits="_Default"
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transiti
onal.dtd">

<html xmlns="http://www.w3.org/
1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1"
runat="server">

         <asp:ObjectDataSource
ID="ObjectDataSource1" runat="server"
SelectMethod="GetEntityHolidays"
TypeName="EntityHoliday" />
         <asp:GridView ID="UserHolidays"
runat="server"
DataSourceID="ObjectDataSource1"
AutoGenerateColumns="False"
OnRowDeleting="UserHolidays_RowDeleting"
DataKeyNames="Id">
             <Columns>
                 <asp:TemplateField
HeaderText="Description">
                     <ItemTemplate>
                        
<%#Eval("Description")%>
                     </ItemTemplate>
                 </asp:TemplateField>

                 <asp:TemplateField
HeaderText="Action">
                     <ItemTemplate>
                        <asp:LinkButton
id="DeleteButton" runat=server
CommandName="Delete">
                            <img border=0
src="../resources/icons/delete.gif" />
                            Delete
                        </asp:LinkButton>
                        <asp:Label runat=server
ID="TestItem"><%#Eval("Id")%>&l
t;/asp:Label>
                     </ItemTemplate>
                 </asp:TemplateField>
             </Columns>
         </asp:GridView>

    </form>
</body>
</html>

Default.aspx.cs
------------------

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Expires = 0;
    }

    //delete a row
    protected void UserHolidays_RowDeleting(object sender,
GridViewDeleteEventArgs e)
    {
        Response.Write("<BR>Key: " +
e.Keys[0]); //e.Keys[0] works here
but doesn't work unless objectdatasource is used, i.e. can't
use
gridview.datasource/bind which is a hassle because
objectdatasource
requires a class with no constructors and won't work with a
repeater

        //THIS DRIVES ME NUTS! I JUST WANT TO GET A VALUE
FOR THE
RECORD FOR THE ROW CLICKED.
        Response.Write("<BR>Label text: " +
(UserHolidays.Rows[e.RowIndex].FindControl("TestItem&qu
ot;) as Label).Text);
        
        Response.End();
    }

}


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the
Google Groups "DotNetDevelopment, VB.NET, C# .NET,
ADO.NET, ASP.NET, XML, XML Web Services,.NET Remoting"
group.
To post to this group, send email to DotNetDevelopmentgooglegroups.com
To unsubscribe from this group, send email to
DotNetDevelopment-unsubscribegooglegroups.com
For more options, visit this group at
http:
//cm.megasolutions.net/forums/default.aspx
-~----------~----~----~----~------~----~------~--~---

Retrieving values from Repeater or GridView row clicked
user name
2006-12-29 11:56:46
Anyone? This doesn't seem like a very complex question, i.e.
how to get
a value for one of the rows in a Repeater or GridView
without using the
old ASP style of manually doing querystring parms or
creating my own
non-server form elements.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the
Google Groups "DotNetDevelopment, VB.NET, C# .NET,
ADO.NET, ASP.NET, XML, XML Web Services,.NET Remoting"
group.
To post to this group, send email to DotNetDevelopmentgooglegroups.com
To unsubscribe from this group, send email to
DotNetDevelopment-unsubscribegooglegroups.com
For more options, visit this group at
http:
//cm.megasolutions.net/forums/default.aspx
-~----------~----~----~----~------~----~------~--~---

Retrieving values from Repeater or GridView row clicked
user name
2006-12-30 13:57:01
ping


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the
Google Groups "DotNetDevelopment, VB.NET, C# .NET,
ADO.NET, ASP.NET, XML, XML Web Services,.NET Remoting"
group.
To post to this group, send email to DotNetDevelopmentgooglegroups.com
To unsubscribe from this group, send email to
DotNetDevelopment-unsubscribegooglegroups.com
For more options, visit this group at
http:
//cm.megasolutions.net/forums/default.aspx
-~----------~----~----~----~------~----~------~--~---

Retrieving values from Repeater or GridView row clicked
user name
2006-12-31 12:39:52
pong


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the
Google Groups "DotNetDevelopment, VB.NET, C# .NET,
ADO.NET, ASP.NET, XML, XML Web Services,.NET Remoting"
group.
To post to this group, send email to DotNetDevelopmentgooglegroups.com
To unsubscribe from this group, send email to
DotNetDevelopment-unsubscribegooglegroups.com
For more options, visit this group at
http:
//cm.megasolutions.net/forums/default.aspx
-~----------~----~----~----~------~----~------~--~---

[1-4]

about | contact  Other archives ( Real Estate discussion Medical topics )