ObjectDataSource->Gridview Clear?

  • Thread starter Thread starter GaryDean
  • Start date Start date
G

GaryDean

I have an objectdatasource reading a dataset and I have a gridview using
that objectdatasource (at design time).

It binds fine but I need to clear it.
myGridView.DataSource = null:
myGridView.DataBind();

does not work! There is no clear method for the ODS. How do I get rid of
it?
 
Howdy,

Unfortunatelly, you cannot clear gridview if datasourceid is assigned (from
logical point of view clear operation does not quite make sense). Because
myGridView.DataSource = null:
myGridView.DataBind();
is simply ignored, you are not getting 'Both DataSource and DataSourceID are
defined on "myGridView". Remove one definition.' exception. But try binding
with empty data source i.e.

myGridView.DataSource = new int[0];
myGridView.DataBind();

and you'll get it. Anyway, i see what you're trying to do. on first page
request, objectdatasource is used to populate gridview (remember it happens
in gridviews's onprerender method that raises PreRender event), and then on
postback, you want to clear the gridview:

protected void btnWhateverClick(object sender, EventArgs e)
{
myGridView.DataSourceID = String.Empty;
myGridView.DataSource = new int[0];
myGridView.DataBind();
}

and you're done.

Hope this helps
 
Hello Gary,

For those ASP.NET 2.0 DataBound controls, since it provides a new
DataSource control bound model(you can add the binding relation at
design-time or runtime), you should use the "DataSourceID" property instead
of the DataSource(which is dedicated for programmatic databinding) to
control the databound control's associated datasource.

So for your scenario, since you've choosed an objectdatasource for your
GridView at design-time, the DataSource control ID has been save in the
GridView's DataSourceID property. In sequential requests(include
postback), even if you manually change GridView.DataSource, Gridview will
still use the "DataSourceID" (the associated datasouce control) to populate
data collection. Thus, you can simply change Gridview.DataSourceID to
empty string and call databind to clear it. e.g.

===============
protected void Button1_Click(object sender, EventArgs e)
{
GridView1.DataSourceID = string.Empty;
GridView1.DataBind();
}
================

Hope this helps.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead



==================================================

Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.



Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.

==================================================



This posting is provided "AS IS" with no warranties, and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top