Error Solution : Both DataSource and DataSourceID are defined on 'GridView1'. Remove one definition.
IF BELOW ERROR IS OCCURRED THEN THE SOLUTION IS GIVEN BELOW :
Server Error in '/' Application. Both DataSource and DataSourceID are defined on 'GridView1'. Remove one definition. 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.InvalidOperationException: Both DataSource and DataSourceID are defined on 'GridView1'. Remove one definition.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[InvalidOperationException: Both DataSource and DataSourceID are defined on 'GridView1'. Remove one definition.] System.Web.UI.WebControls.DataBoundControl.EnsureSingleDataSource() +11637816 System.Web.UI.WebControls.DataBoundControl.ConnectToDataSourceView() +46 System.Web.UI.WebControls.DataBoundControl.OnLoad(EventArgs e) +28 System.Web.UI.Control.LoadRecursive() +90 System.Web.UI.Control.LoadRecursive() +185 System.Web.UI.Control.LoadRecursive() +185 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1602
SOLUTION:
REMOVE GridView1.DataSource = reader OR GridView1.DataSource = dt from "aspx.cs" FILE AS SHOWN BELOW :
con.Open();
string query = "SELECT * FROM utbl";
SqlCommand cmd = new SqlCommand(query,con);
SqlDataReader reader = cmd.ExecuteReader();
//GridView1.DataSource = reader; WE HAVE TO REMOVE THIS LINE THEN ERROR SOLVE
GridView1.DataBind();
Solution: Choose One Approach
Option 1: Keep DataSourceID (Recommended)
Since you are already using <asp:SqlDataSource>, you do not need to manually bind the GridView in the code-behind.
✅ Check your Insert.aspx.cs file and REMOVE any line that sets GridView1.DataSource and GridView1.DataBind().
If you are handling data insertion in Button1_Click, make sure you only insert data and let the SqlDataSource handle the refresh.
Your error occurs because GridView1 has both a DataSourceID (which is set to SqlDataSource1) and a DataSource property being set programmatically in the code-behind (Insert.aspx.cs).
Since DataSourceID="SqlDataSource1" is already declared in the .aspx file, you should not set GridView1.DataSource = someDataTable in the code-behind.
✅ No need to call GridView1.DataBind() because SqlDataSource1 handles it automatically.
If using a SqlDataSource, set only DataSourceID and remove DataSource from code-behind.
If binding manually, set only DataSource in the code-behind and remove DataSourceID from the .aspx file.
Using DataSourceID (Declarative Binding)
-
If you're using a data source control like
SqlDataSource,ObjectDataSource, etc., remove theDataSourceproperty in the code-behind and keep only theDataSourceIDin the.aspxfile.
Comments
Post a Comment