I have an app where I need to dynamically choose an SQLDataSource for a GridView so I can use 1 of 2 stored procedures, depending on who is logged into the system.
My problem is that I am using logic like this, in the button click…
If Session("SiteType") = "Type1" Then
GridView1.DataSourceID = "SqlDataSource2"
Else
GridView1.DataSourceID = "SqlDataSource1"
End If
GridView1.DataBind()
This happens when you click the button that reveals the panel with the gridview in it.
The user then makes changes (basically adjusting a text box on one or more liens of the grid) and then clicks “save”. However, the gridview no longer knows its DataSourceID once this happens, so when I try to go through the gridview’s rows – there are none.
If, in the save button’s click, I put the same code, it (of course) blanks out any of the data changes I made in the form.
So, simply put – how do I dynamically choose the SqlDataSource, but only one time, so that the program then keeps that SqlDataSourceID associated with the gridview until the end of the cycle? Is this a ViewState thing? I don’t totally understand ViewState…
Pardon my ignorance – I’m assuming this is kind of simple, but I just don’t have a ton of .NET experience. If there is a better way, I’d be interested in hearing that as well – that said, time is of the essence so I’m kind of looking for the quick fix right now (boss is breathing down my neck.. heh).
Thanks!
You need to rebind the grid on each postback because you are setting the datasource at runtime in code.
Add this to the pages load event handler: