Get Total Row Count And Why Is The GridView's DataSource Property Null In The DataBound Event Handler

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


Similar Messages:

Data Controls :: Display Total Row Count And Count Of Specific Types In Label In GridView

Oct 5, 2012

I HAVE A GRID VIEW IN asp.net + VB Code. There is a drop down list and the selected data is displayed in web page. I placed a label in web page and code behind i used following code.

Protected Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.DataBound
Label1.Text = GridView1.Rows.Count.ToString()
Dim ONYO As Integer = 0
Dim DONE As Integer = 0
For i As Integer = 0 To GridView1.Rows.Count - 1
If GridView1.Rows(i).Cells(0).Text = "ON YO" Then

[Code] .....

View 1 Replies

DataSource Controls :: How To Get Total Count From An Objectdatasource

Mar 29, 2010

I have a gridview bounded to an objectdatasource.

I want to get total count of record when there is paging = true or false in gridview.

View 4 Replies

DataSource Controls :: Displaying Total Record With Count?

Dec 12, 2010

I have the following ...

<asp:SqlDataSource ID="totalcount" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT COUNT ([CID]) FROM [WWAMembers] WHERE([CID] IS NOT NULL)"></asp:SqlDataSource>

how do I get the totals displayed with label or other control?

View 3 Replies

Forms Data Controls :: Get The DataSource Of GridView Control In SelectedIndexChanged Event Handler?

Jun 8, 2010

Get the DataSource of GridView control in SelectedIndexChanged event handler?

View 6 Replies

Set Label Text To Total Row Count Of Gridview?

Jun 3, 2010

I'm using a stored procedure in a sql database as the data source for a SqlDataSourceControl on my .aspx page. I'm then using the SqlDataSourceControl as the data source for a gridview on my page. Paging is set to true on the gridview. What i would like to do is set the text of a label to the total number of rows in the gridview. I can use this code

'labelRowCount.Text = GridView2.Rows.Count & " layers found"

to return the number of results per page, but it doesn't give me the total.

View 3 Replies

Data Controls :: Get Total Row Count Of GridView Records And Display It

Dec 27, 2012

Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
Label3.Text = GridView1.Rows.Count.ToString()
End Sub

Is there any settings in gridview properties....

View 1 Replies

Forms Data Controls :: Adding A Total Load Count To The Gridview?

Jan 13, 2010

I'll start off with a snapshot of the application i'm working on.

Basically, what's going on is i'm using a bunch of sqldatasources to track truck loads (shown) based off a date/ date range. As there are generally multiple loads that all have the same information, so the information is grabbed with a SELECT DISTINCT so that you're only seeing one entry per multitude of loads. From there, customers can select the load type they want to work with and it goes into more detail, such as who trucked the different loads in, where it came from, where it's going to, references, that kinda stuff.

My question is, would it be feasible to show how many loads there are in total per distinct select? For instance, the top entry actually has 14 loads that are similar to that entry. How would I go about showing it has that total of 14 loads that could be shown?

View 12 Replies

Forms Data Controls :: GridView Count Total Rows With Paging?

Jun 5, 2010

I'm trying to use this code for counting and presenting total No. of rows returned for a grid view with AllowPaging="true" & PageSize="15".

getting the "object reference not set...." error for the "DataSet tbl" line:

[Code]....

View 20 Replies

Data Controls :: Get Total Row Count Of GridView When RadioButtonList Item Is Selected?

Aug 27, 2013

in my asp.net+vb web there is a gridview in which i use a radiobuttion list as selectparameter. it works fine 

there is a label in that page with code behind as under 

Protected Sub RadioButtonList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButtonList1.SelectedIndexChanged
Label1.Text = GridView1.Rows.Count.ToString()
End Sub
count gets displayed but

if i select the first one at that time it will be 0

when i select the second one that time it shows the count of first selection

when i select the third one at that time it shows the count of second selection 

View 1 Replies

Data Controls :: Get Total Count Of Rows In GridView When AllowPaging True

May 7, 2015

I am using a grid view and a textbox(out of gridview to display the total rows in gridview) , i am doing Paging in GridView , and pageSize is set to 5 ; so far i did this

protected void ExistingMappedGrid_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
totalRowsLabel.Text = "Total " + ExistingMappedGrid.Rows.Count + " records.";
}
it shows the number of records , but not total ! it shows only the records displaying on the page .

e.g.

if i have a total of 8 records , not page index works and shows 5 rows in gridview and other 3 rows on 2nd page index , but if on first instane page shows 5 records in gridview then textbox shows 5 and when i click on second page index it shows 3 rows  ( THAT"S NOT WHAT I CODED AND NOT NEEDED ) i want total rows to be shown

View 1 Replies

Forms Data Controls :: GridView And Aspx.cs - Count Total The Price In A Label

Mar 4, 2011

i have a girdview

RefNo
ProductID
ProductName
ProductType
Quantity
Price
000000000000249
FT10
0
ItemA
M
1
92.00
000000000000249
FT23
0
ItemB
M
1
355.00

i want count total the price in a label,

[Code]....

View 2 Replies

DataSource Controls :: Find Total Null Values In A Table Without Using Cursor?

Mar 19, 2010

how can i find the total null values in a table without using sql cursor .

i want to find the percentage of the data which is avaibale in the table and how much percentage of data is unavailable ( or null). to make a comparision chart.

i have 6000 rows and 200 columns in a table , if i use sql cursor , it is taking too much time to execute ( 6000 * 200 ) loops. is there any inbuilt-function in sql to do it .?

View 19 Replies

DataSource Controls :: Getting Value From LinqDataSource In FormView DataBound Event?

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

Difference Between Adding Code In The PreLoad Event Handler And At The Top Of The Load Event Handler?

Oct 3, 2010

Is there a technical reason for the existence of Page.PreLoad or is this just convenience to have a place where you can neatly place code that always have to be executed before the Load code? Is there a difference between adding code in the PreLoad event handler and adding code at the top of the Load event handler? And what would be a typical scenario where you use PreLoad?

View 2 Replies

How To Access The Bound DataSource Item In The ListView's DataBound Event

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

DataSource Controls :: Passing NULL Dates Through A Property?

Jan 11, 2011

Where do I validate my date values prior to passing them as insert programs ?

I am trying to pass some Null dates.

In my property ?

[Code]....

[Code]....

[Code]....

View 2 Replies

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

DataSource Controls :: Passing Parameters By Selecting Event Handler?

Sep 19, 2010

I'm having an issue coming up with an appropriate code design to implement a search page using linq to sql for my DDL. I think the best way for me to explain where I'm at is describing what I've done in the past, before linq. Lets say we have a basic search page with various user input controls for search options... for simplicity, let's say there are two main ways the user can search.
1. a dropdown filled with account numbers. When that drop down is changed and an account number is selected, a gridview needs to be populated with all the records for that account.
2. the second way is a dropdown for choosing what field you want to search, a textbox for entering what you want to search for, and a button to execute that search. In the past, just using straight ado.net

I would handle each of these two search options separately within the events of the dropdown list and the button, respectively. In selectedIndexChanged for 1, and in the buttonClick event for 2, I would construct my sqlCommand etc., ultimately returning a dataset or datatable which I would then bind to the gridview. The logic was separated by the two different event handlers. Now, fast forward to linq to sql and I have a similar page layout, but I am using the linqdatasource selecting event to build my where conditions. Now the difference is *everything*, all the logic, is now in this one event handler, which search option did the user run? Could I somehow craft an IQueryable <T> within each of the input controls event handlers (like the button click, or selectedIndexChanged of the dropdown) and pass that in to the linqdatasource's selecting event? that way my logic stays logically separated...

further, after this initial search is done and results are bound to a gridview, I have several other dropdown lists that appear for search refinement. I need to keep track of that top level query, and each of the refinements... and again, right now it looks like everything is going into the linqdatasource selecting event and I get the feeling it shouldn't be... using the selecting event enables my paging and sorting to work, so I want to use that, but again, it's turning out that I'm putting *everything* there, like all the page's logic, and I'm thinking that is not good? if I could just pass in the actually query, like an IQueryable<T>, and keep my logic separated.

View 8 Replies

Forms Data Controls :: ArrayList And Gridview Row Databound Event

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

Forms Data Controls :: GridView_RowUpdated Event The E.OldValue.count E.NewValue.Count

Jun 4, 2010

In the GridView_RowUpdated event the e.OldValues.count <> e.NewValues.Count. 1 out of 5 columns has been converted to a template field.

View 9 Replies

How To Count The Total Number Of Checkboxes

Dec 9, 2010

How to count the total no. of asp.net checkboxes, checkboxes checked, no. of checkboxes remain unchecked in webform using vb.net ?

I m using Visual studio 2008 with vb as a language ..

I my webform i have 10 checkboxes...

i wanna count total no. of checkboxes in webform in textboxes1

total no. of checkboxes checked in webform in textbox2

total no. of checkboxes remain unchecked in webform in textbox3

View 2 Replies

What Is The Right Way To Count Total Visitor In A Website

Aug 14, 2010

I'm facing with an old problem that it made me confuse very much. So I need your advice to make sure that I've been using the right way. My demand is to count the number of visitor in my website, so I've coded in Global.asax file:

[Code]....

Then, I used variable Application["SiteHitCounter"] and Application[CurrentUsers"] in another C# behind code file to show them on web page.The problem I'm facing is that the website can't show right total visitor number as in my database when I publish it to shared host.

View 3 Replies

Security :: How To Get The Total Count Using Membership

Feb 2, 2011

I need to get the total number of users in aspnet_users table. How is it done.

View 1 Replies

VS 2008 Calculate Gridview Total OnBlur Event Of Textbox Using JQuery?

Jul 25, 2011

I need to attach a function to the onBlur event of a textbox column in my gridview. I know how to attach the event but I need calculating the total.

I have a TemplateField with a textbox as the ItemTemplate and Three labels in the FooterTemplate for Sub Total, VAT and Total.

So when I enter new values into the textboxes I want the totals to get calculated automatically as the textbox loses focus.

View 2 Replies







Copyrights 2005-15 www.BigResource.com, All rights reserved