C# - Best Way To Fetch Gridview Row On Row Databound Event?
Aug 10, 2010
I was just wondering what is the best way to fetch gridview data using row databound event of gridview. I am previously used to Eval but read its not recommended as it uses reflection.
View 1 Replies
Similar Messages:
Nov 7, 2010
How can i do the following:
I already have an ArrayList populated from an Oracle table using SQL Select statement.
[Code]....
View 6 Replies
Jul 22, 2010
I wanted to get the total row count in a GridView's databound event handler, so I tried the following:
protected void grid_DataBound(object sender, EventArgs e)
{
GridView grid = (GridView)sender;
DataSet data = grid.DataSource as DataSet;
if (data == null)
return;
int totalRows = data.Tables[0].Rows.Count;
}
The problem is that the grid.DataSource property is null. The DataSourceID property is not null, so does that mean that I can't access the DataSource object in the DataBound event handler unless I assign the DataSource property directly?
Edit1: Here is the code in my GridHelper class for adding rowcount to the BottomPagerRow. I would like to get rid of the requirement to pass in the ObjectDataSource, but can't because I need to use the Selected event to get total row count. Hence the reason for the question. I also think this might be better in a custom control where I can access ViewState, and/or create child controls during the Init event (I still have a problem to resolve with the way the pager renders with an extra cell), but then I'd still have the problem of how to get to the total row count when the DataSource itself doesn't appear to be available in any GridView events.
Edit 2: Not really relevant to the specific problem, but I resolved the problem I was having with the pager rendering so i've updated the code posted. I found the trick here: [URL]
#region Fields
private int totalRows = -1;
#endregion
#region Constructors
/// <summary>
/// Initializes a new instance of the <see cref="GridHelper"/> class.
/// Adds EventHandlers to the GridView to display results from the ObjectDataSource in the footer.
/// Marked as obsolete because AddResultsToFooter method provides a static access to the same functionality
/// An instance of GridHelper is required by the passed in GridView to store the totalRows value between the two event handlers
/// </summary>
/// <param name="grid">The grid.</param>
/// <param name="source">The ObjectDataSource linked to the GridView.</param>
[Obsolete("Use AddResultsToFooter instead.")]
[EditorBrowsable(EditorBrowsableState.Never)]
public GridHelper(GridView grid, ObjectDataSource source)
{
source.Selected += source_Selected;
grid.PreRender += grid_PreRender;
}
#endregion
#region Event Handlers
private void grid_PreRender(object sender, EventArgs e)
{
GridView grid = (GridView)sender;
if (grid.HeaderRow != null)
grid.HeaderRow.TableSection = TableRowSection.TableHeader;
//Add a cell to the bottom pager row to display the total results
if (grid.BottomPagerRow == null || !grid.BottomPagerRow.Visible)
return;
//Get the control used to render the pager
//http://michaelmerrell.com/2010/01/dynamically-modifying-the-asp-net-gridview-paging-control/
Table tblPager = grid.BottomPagerRow.Cells[0].Controls[0] as Table;
if (tblPager == null)
return;
if (totalRows < 0)
{
//The DataSource has not been refreshed so get totalRows from round trip to client
addResultsToPagerTable(tblPager, grid.Attributes["results"]);
return;
}
int firstRow = grid.PageIndex * grid.PageSize + 1;
int lastRow = firstRow + grid.Rows.Count - 1;
string results;
if (totalRows <= grid.PageSize)
results = string.Format("<span class='grid-pager'>{0} Results</span>", totalRows);
else
results = string.Format("Results <b>{0}</b> to <b>{1}</b> of <b>{2}</b>", firstRow, lastRow, totalRows);
addResultsToPagerTable(tblPager, results);
//Need to store the information somewhere that is persisted via ViewState, and we don't have access to ViewState here
grid.Attributes.Add("results", results);
}
/// <summary>
/// Handles the Selected event of the source control. Gets the total rows, since it is not possible to access them from the GridView.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs"/> instance containing the event data.</param>
private void source_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.ReturnValue is DataView)
totalRows = ((DataView)e.ReturnValue).Count;
else if (e.ReturnValue is EntitySet)
totalRows = ((EntitySet)e.ReturnValue).Count;
}
#endregion
#region Private Methods
private static void addResultsToPagerTable(Table tblPager, string results)
{
//http://michaelmerrell.com/2010/01/dynamically-modifying-the-asp-net-gridview-paging-control/
//Get a handle to the original pager row
TableRow pagesTableRow = tblPager.Rows[0];
//Add enough cells to make the pager row bigger than the label we're adding
while (pagesTableRow.Cells.Count < 10)
pagesTableRow.Cells.Add(new TableCell { BorderStyle = BorderStyle.None });
//Add a new cell in a new row to the table
TableRow newTableRow = new TableRow();
newTableRow.Cells.AddAt(0, new TableCell
{
Text = results,
BorderStyle = BorderStyle.None,
ColumnSpan = pagesTableRow.Cells.Count
});
tblPager.Rows.AddAt(0, newTableRow);
}
#endregion
#region Public Methods
/// <summary>
/// Adds EventHandlers to the GridView to display results from the ObjectDataSource in the footer.
/// </summary>
/// <param name="grid">The GridView.</param>
/// <param name="source">The ObjectDataSource linked to the GridView.</param>
public static void AddResultsToFooter(GridView grid, ObjectDataSource source)
{
if (grid == null)
throw new ArgumentNullException("grid", "grid is null.");
if (source == null)
throw new ArgumentNullException("source", "source is null.");
new GridHelper(grid, source);
}
#endregion
View 1 Replies
Mar 11, 2010
How can I access RowDataBound(...) event of child grid. I want to change the background color of the cell in the child grid based on the value.
I have Master/Slave GrisViews (or you can say Parent/Child GridViews). I am populating Child GidView in Parent's RowDataBound (..) event, as follows
[Code]....
In child grid, I have to calculate some values to dislay in the footer row of the child grid.
The following DataBound event focan I accessr te child grid is throwing an error "The name 'ChildGrid' does not exist in the current context"
[Code]....
Here is the ParentGrid with ChildGrid
[Code]....
View 7 Replies
Aug 24, 2010
It happened to add an extra Gridveiw Header in row_databound event , It did worked fine on !Postback but disappered on Page.Postback . Quick google search guided me to move the event to Row_Created event and every thing is okay .
Can any expert post some pointers , differnces between grid row_created vs row_databount with some sample table data created dynamically behaviour of both the events in !Postback and page.Postback .
View 2 Replies
Mar 8, 2011
I have an aspx master/content page scenario. The parent page has an IFrame which points to a child.aspx. The child.aspx has a checkbox, On page_load of child.aspx, I want to show/hide the checkbox depending on the following logic:
- if the child.aspx is opened directly, then I have to show the checkbox.
- if the child.aspx is opened in the IFrame, then I have to hide the checkbox.
Basically, I want to check in child.aspx, if it contains a parent window then hide the checkbox control otherwise show it.I will prefer the show/hide code in codebehind in Page_load event as I have to execute some more logic depending on whether the it is opened from parent window or not.
Till now I did the following:
In child.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
<script language="javascript" type="text/javascript">
function DoesParentExists()[code].....
Using RegisterClientScriptBlock, I get error in JS. That the object hfDoesParentExist doesn't exist 'coz the control is not yet created. Right? I tried using RegisterStartupScript but in codebehind I always get null in hidden variable. I don't want to use the on button click or something like it. I need it on page_load event only.
View 2 Replies
Mar 16, 2011
I am working on a project in ASP.Net, in which I am using DataList control to list the candidate data. As we know, DataBoud event is available for gridview control, which is raises after databound. In DataList control no such event is available. Yes, ItemDataBound event is there which is arises on every Item bound. Let us assume, that I want the number of items are listed in datalist, after completing the data bound of datalist.
View 2 Replies
Dec 20, 2010
Take for example a DetailsView control with an ObjectDataSource as its datasource.Normally in the DetailsView.ItemUpdated event I would grab a reference to the details view by casting the sender:
DetailsView dv = (DetailsView)sender;
In certain situations it becomes necessary to handle the event inside the ObjectDataSource.ItemUpdated event. In this case sender is now of type ObjectDataSource. What I want to be able to do is write clean code that isnt hardcoded like
Label label1 = DetailsView1.FindControl("Label1");
I looked over the documentation and also did some searches but couldnt find how I would write some code like the following:
protected void ObjectDataSource1_Inserted(object sender, ObjectDataSourceStatusEventArgs e)
{
ObjectDataSource ods = (ObjectDataSource)sender;
DetailsView dv = (DetailsView)ods.SOMETHING_HERE;
}
what I should be putting in the SOMETHING_HERE in the snippet above?
View 2 Replies
Mar 16, 2010
I just started working with LinqDataSources and I was wondering how you retrieve values in a FormView DataBound Event.
With an ObjectDataSource I believe you can grab them like:
[Code]....
Is there a similar way to acheive this with a LinqDataSource?
View 4 Replies
Apr 23, 2010
I have FormView in my page markup:
[code].....
In theory, I'm able to find control on FormView after it being data bound. But I'm not. Why?
View 1 Replies
Jan 19, 2011
have a listview with a list of comments. I would like to add the avatar of the person that posted the comment to each comment. To accomplish this I need to find the ListViewItem find the UserID get the avatar URL and add it to the ListView. I am sure I can do all of this in the ListView Databound event but how?
protected
void ListViewViewComments_DataBound(object sender,
EventArgs e)
{
try
[code]...
View 1 Replies
Sep 22, 2010
I know the question has already been posted here but we didn't get to an real solution.I have bound my ListView to an SqlDataSource and I want to write some text in a control present in the view created in the LayoutTemplate depending on some properties of the rows returned.Obviously, I'm using the ItemDataBound event to feed my items but this is not the point.
The spontaneous solution was to bind the ListView.DataBound event and access the raw datasource (a DataTable?) and do the required calculations.I inspected the Items property and, despite it was not empty, the related DataItem property was null.The only work-around I can come to is to execute the calculations in the ItemDataBound event and accumulate the result in some private fields. But it's really ugly to see and makes harder to get some of the required values.
View 1 Replies
Oct 7, 2010
Currently struggling with a problem that I've encountered variations on in the past. At the moment a worthwhile solution escapes me, but it seems such an obvious issue that I can't help wondering whether or not there's a "best practice" approach I should adopt.Without code, here's the issues in a nutshell:
page has databound control (a repeater) which isn't populated until user inputs data and clicks a button.Repeater item template contains a buttonUser clicks button, page posts back. On load, the repeater is actually empty so event is never handled because the originating control no longer existsGo back to the beginning of wretched cycle I've confirmed that this is the problem because if you provide the repeater with some static data on page load, everything works fine. But of course that's no use because it has to be populated dynamically.Is there a commonly approved way round this headache? I can store the data in session and re-use it on page load, but it seems terribly clumsy.
View 2 Replies
Oct 5, 2010
I have a condition on which i have to set the column of the datalist at run time.IT may be 2,3 or 4 at run time. How i do it. plz replay as soon as possible.
Is this possible that on the item bound event i set the html <tr><td>.
View 1 Replies
Feb 11, 2011
I have a DetailsView control bound to an ObjectDataSource within a User Control (.ascx). It appears that the DetailsView.OnDataBound event is being fired on every page load or postback.
I do not see this behavior with a similiar DetailsView directly placed on an aspx page.
View 1 Replies
Jul 12, 2010
i have a check box list control that is used for showing related files to some post.
what i want to do is set the databound items "checked" to true by default
then,
if a user unchecks some item and clicks the save button. then the selectedindexchanged will fire and i will do some logic.
what i have done is.
--Set All Databound items to "checked" --
[code]....
in the end i want the item that was unchecked to be removed (all other items will remain checked). but even before that, when the user control is loaded all the files that were bounded are being deleted by the index change event.
View 3 Replies
Jun 28, 2010
last year I inherited a webapplication that seems to refuse to run on a new hosting company's servers due to a "security violation"... Our old host was bought out and now sucks...So I uploaded the code to the new company - looking forward to some sleep and found that my life was about to get more complex.. I go the good old generic security error
System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object
The biggest issue was that it didn't say where the error was.. Digging deeper (taking the code appart one block a time) the error was being triggered by the followin itemdatabound event. My host says it is because they are running under medium trust, but I am not seeing why this block should cause issues. Any help very much appreciated.
Sub dlstAlsoDish_ItemDataBound(ByVal s
As
Object,
ByVal e
As DataListItemEventArgs)
Handles dlstAlsoDish.ItemDataBound
If e.Item.ItemType = ListItemType.Item
Or e.Item.ItemType = ListItemType.AlternatingItem
Then
Dim lngDateType
As
Long = e.Item.DataItem("dateType")Dim
strEvent As
String =
"> " & e.Item.DataItem("restName") &
" :: " & e.Item.DataItem("eventName") &
" : "
Dim lnkAlsoEvent
As HyperLink = e.Item.FindControl("lnkAlsoEvent")Dim dtmStart
As DateTime = e.Item.DataItem("eventSrt")Dim dtmEnd
As DateTime = e.Item.DataItem("eventEnd")If lngDateType = 1
Then
strEvent = strEvent & Format(dtmStart, "MMM")ElseIf lngDateType = 2
Then
strEvent = strEvent & Format(dtmStart, "dd MMM") &
" TO " & Format(DateAdd(DateInterval.Day, -1, dtmEnd),
"dd MMM")Else
strEvent = strEvent & Format(dtmStart,"dd MMM")End
If
lnkAlsoEvent.Text = strEvent
lnkAlsoEvent.NavigateUrl = e.Item.DataItem("restURL") &
"/events.aspx#e" & e.Item.DataItem("eventID")ElseIf e.Item.ItemType = ListItemType.Header
Then
imgBorder.ImageUrl = strImageURLDim imgBorder
As Image = e.Item.FindControl("imgBorder")End
If
End
Sub
View 3 Replies
May 10, 2010
i have a FormView, and i already have a Label control that gets the value of theselected propery inside the FormView, so each time the FormView displays data, i have a Label control that displays individual values, according to the value of the FormView, here is the code:
[code]....
What i would like to do is to know how i could add a DataList instead of a Label, and then each time the FormView databinds an item, to show the value of the DataList How would i go about doing that?
View 10 Replies
Nov 30, 2010
I have a gridview with dropdown boxes. As soon as the complete gridview is databound, I want to loop through ALL the rows and set the values of the dropdown boxe in a row based on the value of another column in the same row. The gridview is databound, all data shows up. The condition "If ddl.Items(j).Value = searchstring Then" evaluates as true, but somehow the selected item in the dropdownbox is NOT changed and remains "<ignore>"
[Code]....
View 5 Replies
Dec 7, 2010
I want to render something like this (with ASP.Net Controls in the codebehind):
<ul>
<li class="first"><h1>This is a caption</h1></li>
<li><a href="#" title="" target="_self">Foo</a></li>
<li><a href="#" title="" target="_self">Foo1</a></li>
<li><a href="#" title="" target="_self">Foo2</a></li>
<li><a href="#" title="" target="_self">Foo3</a></li>
<li><a href="#" title="" target="_self">Foo4</a></li>
</ul>
<ul>
<li class="first"><h1>This is a another caption</h1></li>
<li><a href="#" title="" target="_self">Foo5</a></li>
<li><a href="#" title="" target="_self">Foo6</a></li>
<li><a href="#" title="" target="_self">Foo7</a></li>
<li><a href="#" title="" target="_self">Foo8</a></li>
<li><a href="#" title="" target="_self">Foo9</a></li>
<li><a href="#" title="" target="_self">Foo10</a></li>
<li><a href="#" title="" target="_self">Foo11</a></li>
</ul>
The amount of li elements that will be rendered into each ul is determined at runtime. Each link in a li belongs to into a specific ul (the one containing a specific caption. Imagine this as a kind of a treeview with nodes and subnodes) During the bind Event I need access to an ASP:HyperLink that will be rendered into the a-element. Which databound ASP.Net control should I pick for this? Looks like a repeater in a repeater, which should make the databinding process ugly. I'm thinking about creating this HTML-Output with StringWriters myself.
View 1 Replies
Jan 13, 2010
I have 2 pages (let's say one is a.aspx and the other one is b.aspx). In the b.aspx, there is a nested listview control (let's say outer listview and inner listview).Therefore, there is an event on databound for the outer listview. so basically, the event will programmatically bind the datasource for the inner listview.
Now, in a.aspx there is a button to open a new window (with unique window name) b.aspx. The very first time click on the button, a.aspx opens a new window for b.aspx without triggering the databound event. However, the second click and so on will trigger the databound event which is causing an error because there is no data yet in the outer listview.My question is, what could have possibly triggered the databound event while there is no data in the listview?
View 3 Replies
Jul 14, 2010
While writing a web application Using MS Web Developer 2010 Express, I noticed a rather disconcerting behavior of the asp:DropDownlist control.When using databinding and you assign a DataValueField the selectedIndexChanged does not fire or change unless the value of the DataValueField changes no matter what the value of the DataTextField. This means that if I have several different text values(States/Provinces) with the same datavalue (US/Canada) I cannot fire an event if the text changes (the textchanged does not fire either) as long as the datavalue doesn't change (all States are US all Provinces are CA). This would seem to be a counter intuitive behavior?
[code]...
View 5 Replies
Sep 2, 2010
1) For some reason the MainDivision column in this is displaying bold and centered (the rest are left and not bold). Anybody see something that creeped into this markup that might be causing this?
HTML Code:
[code]....
2) How can I add a non-databound checkbox to a gridview? It only seems to appear if I bind it to something, but I want it so the user can check which rows he wants to perform an action against, so it has no value other than UI interaction.
View 3 Replies
Dec 14, 2010
I have a table in the itemtemplate of a gridview.
My requirement is something like what's shown in the below link
[URL]
i.e. Say 3, 4 and 5 are user id's. The middle column can contain some information about that user. Say for User 3 we have Info 1, Info 2 and Info 3 in those three rows. Similarly, for user 4 and 5, we would have some values in the middle column.
The number of rows in the middle column can vary. It depends on the number of rows returned by the DB call for that user.
So, how can I achieve this using grid view?
Will it be possible for me to add rows in the databound event dynamically by looking at the previous or next row in the datasource? If so, how should I go about it?
View 2 Replies
Mar 15, 2010
I am going to create a site like youtube therfore.I want to fetch some images from particular folder and put that in the gridview and I want to give them link so i can play the videos which are in my harddisk.
View 5 Replies