Forms Data Controls :: How To Postpone Gridview Databinding
Sep 30, 2010
I have a GV & a FV both linked to same sqldatasource.
When a GV row is clicked, the FV becomes available for editing the row but the GV as a result is reduced to only that row. I want to GV to remain showing all rows. I am using GV selected_index event to invoke "SqlDataSource1.SelectCommand=
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,
I'm looking for the cleanest 'best practice' solution as this is a learning exercise more than anything else.
I have a gridview in which I have two drop downs. One is populated with values that are static, so I have a regular sub that does that in the code behind. I tried to add code for databinding the other ddl to a datatable. I cannot get this to work. It just comes up empty. My asp code is fine, and the datatable definately has data in it - just nothing gets populated.
One other thing - the code for the static ddl has worked fine, but when I add this other block (either to the same sub as that, or dow the rowdatabound event) the static one doesn't work either.
I am having issues with databinding a textbox within a tab within a gridview. The textbox displays the data information properly; however when I try to edit a row in my gridview anything I type within that textbox is not saved in the database. Also my other fields for my gridview are editable, I am only having issues with this textbox within a tab. Here is the code:
I was wondering what would be the best pratice to databind a gridview programmatically.Normally i put my databind code in the page_load() but is there a way to reduce the number of times the databind method is called?I mean... the page_load() method seem to be called a lots of times when doing callbacks with the grid.
im building a simple message messenger web application, i currently have a column in my database dedicated to the status of a message. Its bound to the third column in a datagrid.
After converting the column to a TemplateField and using a Label to fetch the data how do i change the text from the database to a small message, e.g. if the data in the database (as an interger) is 0. how do i change the interger to a string to display "UnRead". Do i need to do this during the databinding call or after the grid has been databound?
I know it would be easier to use a boolean and checkbox control but the interger column represents more values than true or false.
Inside my repeater I'm calling an extension method like so:
he above is giving me an "Object not set to an instance of a object" exception inside the extension method. If I comment the above expression out, it works fine, and the items are binded wtih no problems.
I've created a templated user control by following the example on the microsoft support pages. I won't post it all but the important part of the CS file looks as follows:
I'm not sure if the whole _CurrentDataItem business is required, I don't think so.The problem I've got, is that I've tried nesting it inside a FormView control so I can use it to display a record from a database. My ASPX looks like this:
Now, the bound properties (TitleText and TitleSubText) bind correctly, but the nested / template content is blank when the page loads. I'm not sure if this is something to do with the order in which everything is loaded or because I'm missing some code in the SimpleTemplate to get it to bind (etc.).
I have a forms view with an EditItemTemplate. I would like to populate the EditItemTemplate using the code behind vs. mixing the data in the UI as so:
At what point do I do this? I thought it would be on FormView_DataBinding, but there is no e.item.dataitem like other databound controls. My issue is that I need to check criteria of the data prior so I know which inputs to make visible, to set properties of controls within the EditItemTemplate, and manipulate the data prior to binding (less of an issue as I can always just tweak the data prior to binding, but it doesn't solve my other problems).
I have a custom DataControlField class that works fine but when I try to use <%# Eval('???') %> with it I get an error."Databinding expressions are only supported on objects that have a DataBinding event. SharedG.ImageLinkButtonField does not have a DataBinding event."I can't get this to work,the DataControlField dosen't seem to have a DataBinding event to override or anything.I could use a normal templatefield itemtemplate etc.with eval but I don't want to rewrite this all the time. [Code]....
I have a very simple form that contains a FormView Control Bound with a SqlDataSource, The DefaultMode of the FormView control is "Insert". I noticed that when I run the page for the first time, the databinsing and databound events of the FormView Control occurs after the PreRender Event of the page ! I know very well the life cycle of a page, but I dont know when the data binding occurs in the life cycle of a page and if it can differ from a control to another.
Is there an article or a tutorial explaining all those things.
My problem is that I have a different format table for each section in my form. And I would like to bind data to these tables. A repeater I don't think is going to work. It would be great if I can do it like this:
Where the "+ 1" is the next record from that datasource --which is bound in code behind. Is there anyway, I can accomplish this without resorting to dynamically created tables.
I have a asp:repeater control which I am using to display a photo and the Name. So for this I have to execute SQL query and unfortunately I dont have the control of the database - table design. So the photo comes from one table and the Name comes from another table. I wrote 2 sql queries to get both these information created 2 sqldatareader. So now I have to bind the repeater control to both of these reader. But I know it does not work. Is there any other way I can do this? I even tried to nest a repeater control inside another. But that does not work anyway.