DataSource Controls :: How To Get Total Count From An Objectdatasource
Mar 29, 2010I have a gridview bounded to an objectdatasource.
I want to get total count of record when there is paging = true or false in gridview.
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.
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?
I am viewing items returned from a dataset in an Infragistics chart control. My problem is that due to a weak point in the control, I am left looking for a way to manipulate the height of the chart based on the count/number of items returned by the ObjectDataSource(DataSet).
Does anyone one have an existing C# sample they could let me view of accessing the count of records returned within the code-behind of a page that I could then use within a case statement to set the hight of the control?
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] .....
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
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....
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?
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]....
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
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
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]....
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
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.
I need to get the total number of users in aspnet_users table. How is it done.
View 1 Replieshow to count total record in my data grid and after that export the records to excel ?
Below are the coding of my datagrid .
GridView id="grdCustomer"
void Data()
{
qry = "select * from customer order by customerId DESC";
DataSet ds = new DataSet();
ds = DBUtil.getTable(qry);
if (ds.Tables[0].Rows.Count != 0)
{
grdCustomer.DataSource = ds;
grdCustomer.DataBind();
}
else
{
lblMsg.Text = "Customer List Is Empty";
}
}
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.
I want to count total unique visits in a particular page of my website using ASP.Net, C#. How i will do it
View 1 Replieshow to count total record in my data grid and after that export the records to excel ?
GridView id="grdCustomer"
void Data()
{
qry = "select * from customer order by customerId DESC";
DataSet ds = new DataSet();
ds = DBUtil.getTable(qry);
if (ds.Tables[0].Rows.Count != 0)
{
grdCustomer.DataSource = ds;
grdCustomer.DataBind();
}
else
{
lblMsg.Text = "Customer List Is Empty";
}
}
how to count total no of record in different group section in seagate crystal report
View 2 RepliesI want to display no. of rows a table contain from database on label, how can i do that..
View 1 RepliesI am really having a hard time trying to write something from scratch I created a 'Person' Class.Public Class Person
Private _FirstName As String = ""
Private _LastName As String = ""
Private _Age As Integer = 0
Public Sub New(ByVal FirstName As String, ByVal LastName As String, ByVal Age As Integer)
FirstName = FirstName
_LastName = LastName
_Age = Age
[code]...
I have set the objectdatasource in the web form. Does I need to check anything as I find that method "objProductSuppliment_Inserted" does not run??
-----------------------------------------------------------------------------------------------------------
<asp:ObjectDataSource ID="objProductSuppliment" runat="server"
OnInserted="objProductSuppliment_Inserted"
TypeName="BLL.WMS.ProductSuppliment"
[code]...
Customers of hours buy packs of hours, these are credited and debited on their account. We have a prepayhours table and that has various columns in it, one credit and one debit. I have written a query using the Query building and SQLDS to total these columns, which is fine. What i really want to do is get that query, or if there is an easier way to add up all the debits and subtract them from the total of credits so you would end up with a + or - totalThen with that i can put it into a label or if there was a way to add a row at the end of my gridview which just said total in one column and the total of the hours in the next.
I have some SQL code which seems to work in SQL 2008 but not in the SQL designer for VWD.
CREATE VIEW dbo.prepayhrstotals
AS
SELECT COUNT(Debit) AS cntDebit, COUNT(Credit) AS cntCredit
FROM prepayhrs
GO
SELECT (cntdebit - cntcredit) AS totalhours
FROM prepayhrstotals
I've created a query in the table adapter for retrieving customer name based on the first letter. The query is executed fine, and the output is the customer name and ID. A Customer BLL accesses this query, and sends the results to an objectdatasource. This control is configured to use this customer-by-letter query. However for some reason, this objectdatasource does not bind the name and ID, but instead all the other fields produced by the main query in the table adapter (i.e. name, address, phone, etc....).
I'm probably not configuring something correctly, but I'm not sure what.
The BLL code:
[Code]....
The .net code:
[Code]....
My Business Logic Layer has AddItem method that add's to Items table in db along with an entry in Balance table.AddItem method uses two TableAdapters Items & Balance. Both these have corresponding Business Objects as Item and Balance.
Here is the AddItem method :
[Code]....
ASPX Page with DetailsView & ObjectDataSource
[Code]....
Now executing this page generates error as
ObjectDataSource 'ObjectDataSource2' could not find a non-generic method 'AddItem' that has parameters: _item, _balance, ItemName, GroupId, CategoryId, AuId, Rate, TotalStrScale, OffsStrScale, OffsAE [code]...