Forms Data Controls :: Create User Control For Gridview Paging?
Jun 21, 2010
I want to create user control for gridview paging, so it may be reusable for every grid in my application, my user control should be like below, how its possible
eg: previous 1,2,3,4,5,6,7,8,9,10 More If i clicks more link next 10 pages of records should be visible, how its process?
I'm trying to extend the GridView control to enable sorting and paging for any situation.
When using my control I am fetching data from a database and filling a DataSet with it, then binding the GridView upon every page load. My first question would be, is this the correct approach?
To sort the GridView I am overriding the OnSorting method which stores the sort expression and direction in the ViewState, then creates a DataView and utalises the Sort method to sort the underlying data. It then sets the Data Source to this DataView and rebinds the GridView.
Paging is handled by OnPageIndexChanging which simply sets the PageIndex property and again rebinds the GridView.
My problem is; when any control causes a postback my GridView is no longer sorted, presumably because it is persistently rebound. If I don't rebind it then the GridView is empty on postback since the data isn't automatically stored in the ViewState. I have considered saving the data source in the ViewState but I would assume that this is bad practice for large amounts of data? - also DataViews are not seralisable.
The only solution I can think of currently is to override OnDataBound and sort the data every time. This results in a double sort when paging triggers a postback which seems inefficient. Code illustration of this below,
[Code]....
I'm looking for the cleanest 'best practice' solution as this is a learning exercise more than anything else.
Dim Con As New MySqlConnection Dim Cmd As New MySqlCommand Dim Adp As New MySqlDataAdapter Dim DTable As DataTable Con.ConnectionString = ConfigurationManager.ConnectionStrings("dbConString").ConnectionString Cmd.CommandType = CommandType.StoredProcedure Cmd.CommandText = "sp_FetchAllUsers" Cmd.Connection = Con Adp = New MySqlDataAdapter Adp.SelectCommand = Cmd DTable = New DataTable Adp.Fill(DTable) GridView1.DataSource = DTable GridView1.DataBind()
Basically Gridview controls is used to display data in tabular format. but due to requirement I changed its layout to columner in following manner
Now come to the problem, i set the AllowPaging="True" and page size to 3 records/page but when click on paging links it displays the following error :
The GridView 'myGridView' fired event PageIndexChanging which wasn't handled.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: The GridView 'myGridView' fired event PageIndexChanging which wasn't handled.
Is there a way to use the GridView paging and having the links not use JavaScript. So that when you click on the page number 5 (for example) that link is a hyperlink.
how to get the total row counts in a Gridview control with default paging enabled? My gridview control is bind to an ObjectDataSource control.
The problem I am having right now is that when I loop through the gridview control, it only contains the total row for the current page being displayed on the screen and not
the total row in the entire grid. I am using the the for each loop.
I downloaded the code and when the gridview loads it works; however, when I select the next gridview index page, the gridview is blank. Don't know why it is not working like it should.
I would like to use the gridview paging feature and have built a gridview with a user control. The data source has lots of columns, so to make it easier I want to return a LIST<MyObject> and just pass <Myobject> into the user control rather than all the data elements. Not sure how I access the object of the data source to bind to the control. Assume it would be during ondatarowbound.
Also, my guess is there is a better way to do this than gridview. I'd take either solution that allows me to have easy paging and pass the complete object into the user control
i am trying to create a paging facility for my dalatist dynamically and for this i am taking a hyperlink and putting it in a panel and showing the list of pages
but the problem is that when i click on next page for example from 1st page to another then it refreshes the page and opens the page with IsPostback = False and thus my all values that i have stored in a session becomes null like fisrt time loading
so it there any way so that when i click on the link it just show me the next bunch of record without refreshing the page ??
Note: i have created paging in my Stored procedure where each page contains 10 record per page
the code that i am using to bind the pager is as below : where default value of _PageIdx=1 and _totalPages = the number of pages that are coming from the database, it vary from search to another search
i would like to create custom columns in the GridView Control.For example:After performing SQL query, there are 4 columns bound to the control: 1. ID 2. Name 3. LA 4. LE
Now, for each row, I would like to add column5. Custom - which would read LA and LE values from each row, assign them to variables vLA and vLE respectfuly, and then, I'd take vLA and vLE to perform custom calculations every time the page is displayed.I know how to make a custom colum to display calculated result, butCan someone please help me how to read LA and LE values for each row?
I have created a gridview (this is a usercontrol) with another gridview (also a usercontrol) inside it. Now I would like to bind a checkboxlist to the inner gridview. This is my markup for the inner gridview user control
inserted a data grid view control with paging.What I don't like is when the user hovers the numbers for the paging, the autoformat is classic, when the user hovers, there is a white box and the number dissapears because the box and the number have the same color,
I have a parent gridview5 with child gridview 6, today i deployed it to our dev server and on that server we have alot more records, so for the nested gridviews i need to enable paging on the parent gridview5. Doing so works fine, until i make a selection within the child gridview6, once any selection is made, and i try to page the page throws an error, i have the following bound to the parent gridview5.
I'm having difficulty trying to create and persist controls inside of a gridview during postbacks. I have an unbound Datagrid control which is created with x number of rows and y number of columns during the Page_Load event.
[Code]....
During the RowDataBound event of the GridView, I create a placeholder control and then I create a label and add the label to the placeholder
[Code]....
On the first page load when navigating to the page, the grid dispays perfectly and the labels are created with no issues and I can see the "1" in every single cell of the Gridview. I basically need the labels in the cells to store an ID when the cell is clicked (the click event works with no issues, wired it all up with javascript) and Since the Cells to not exist prior to "Building the matrix" method, How can I persist the Label controls inside of the tablecells between postbacks so I can assign and read values from them.
I've read a number of online posts from 4guys from rolla and they demonstrate how to persist a handful of controls dynamically created in a staticly defined PlaceHolder conrol outside of the complicated setup of the gridview and have failed at adapting them. The golden rule seems to be to 'recreate' the controls during Page_PreInit during the postback, but I can't seem to get it working.
I have requirement that i have to accpted data from user in a gridview like control.That its row column heder contatin calender date and row header contain specfic taske ,one have to drag and drop user coreponding date to specfic taskfor eg: column header contatins dates like 1/04/20010 to 30/04/2010and row header contain specific task.one user drag and drop sepcfic entity correspond to sefic date and specific controlI have gone through site to find this type of control allow drag and drop and customize column and row header.
I binded user control in gridview dynamically using templatefield (through code behind)
User control consists of 2 textboxes and one dropdown.
There is one button outside the gridview on the form. On click of that button i have to save the values of usercontrol's (child controls i.e textbox and dropdown values) but i am not able to get the values of user controls.
I am able to get User Control using LoadControl and child controls using FindControl but not able get values i am getting textbox values as blank and dropdown value as 0th selected index even though there is value entered by the user.
I am trying to experiment with things as a beginner and want to use paging in Repeater Control. Since Repeater control is light weight, I want to use that. I have heard of two methods: PagedDataSource class and the other that I dont remember. I wanted to attempt both of them. How do I proceed?
I wont to create a User Control based in gridview that have the edit add delete incorporate,the problem is these:In the admin part of my web site i have to repeat the same action for view add delete update the data for different datasource.I wont to create a generic gridview that have incorporate these action.The gridview can take a xml file for configure him self dependently of the request for desplay the data.
I have a user control called ucTriStateButton. It raises an event when it is clicked, called TriStateButtonClicked. If I put this user control on a page, it works fine. Here is the declaration on the .aspx page:
[Code]....
When the button is clicked the method tsbTest_TriStateButtonClicked executes correctly.
The problem is when I put the user control in template field of a GridView.
[Code]....
There is no way to hook the event handler to the control in Page_Load because I cannot get a reference to tsbMorning. So I did it in the RowDataBound event handler of the GridView, where I also do a bunch of other row-specific stuff. Although this builds and runs, the event is never actually subscribed to and so never gets fired.
So the question is - how can I handle an event from many instances of the same user control within a GridView? I am calling the same bit of code regardless of which user control is actually clicked. I only need to know that one was clicked.
I have a page with lots of panels on it. Some of the panels are user controls and some are just on the page. I have a form on the page where you can add users and a gridview which is a user control showing a list of users.When a new user is added on the form I want to do gridview.databind() for the gridview in the user control. Does anyone know how to do this?