C# DataSource和DataSourceID都是在';GridView1';。删除一个定义

C# DataSource和DataSourceID都是在';GridView1';。删除一个定义,c#,gridview,data-binding,C#,Gridview,Data Binding,我想向数据库中添加一条记录,并通过单击add在同一页面的gridview上查看它。 对于刷新和更新gridview,我使用showData()如下所示: protected void ShowData() { SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=Khayati;Integrated Security=True"); con.Open(); string qu =

我想向数据库中添加一条记录,并通过单击add在同一页面的gridview上查看它。 对于刷新和更新gridview,我使用showData()如下所示:

 protected void ShowData()
{

    SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=Khayati;Integrated Security=True");

    con.Open();
    string qu = string.Format("Select * from Ordertb ", con);
    SqlDataAdapter da = new SqlDataAdapter(qu, con);
    DataSet ds = new DataSet();
    da.Fill(ds, "logtbl");
    if (ds.Tables["logtbl"].Rows.Count > 0)
    {
        GridView1.DataSource = ds.Tables[0];
        GridView1.DataBind();
    }
    con.Close();
}
但有一个错误:

“DataSource和DataSourceID都是在'GridView1'上定义的。请删除一个定义。”。 描述:在执行当前web请求期间发生未经处理的异常。请查看堆栈跟踪,以了解有关错误及其在代码中起源的详细信息

异常详细信息:System.InvalidOperationException:在“GridView1”上定义了DataSource和DataSourceID。请删除一个定义。“

这个错误指向:

GridView1.DataBind();
我必须在一天内完成这个项目,请帮助我。 谢谢。

如果为已在ASPX页面标记中为特定数据源定义了
DataSourceID
属性值的
GridView
设置数据源,则通常会出现“DataSource和DataSourceID都在X上定义”的情况

要解决此问题,请在代码隐藏处将
DataSourceID
属性设置为null:

if (ds.Tables["logtbl"].Rows.Count > 0)
{
    GridView1.DataSourceID = null; // string.Empty can also used
    GridView1.DataSource = ds.Tables[0];
    GridView1.DataBind();
}
或者从
GridView
页面标记中删除
DataSourceID
属性:

<%-- Before --%>
<asp:GridView ID="GridView1" runat="server" DataSourceID="ADataSource" ... />

<%-- After --%>
<asp:GridView ID="GridView1" runat="server" ... />


对于那些在搜索上述错误语法后遇到此问题并点击此线程的人,仅供参考:

如果很可能没有代码更改,或者如果有,但它们应该与错误无关,请检查应用程序使用的TLS级别,并确保.Net Framework级别支持它

我刚刚帮助一个客户解决了这个确切的错误,并发现——尽管措辞冗长——这个问题是由于在操作系统级别禁用了TLS 1.2版以下的协议


由于许多组织试图实施Microsoft的指南,以禁用TLS 1.2以下的协议,这可能是一条常见的误导性错误消息。

在代码隐藏中将
DataSourceID
设置为null,或者仅删除ASPX页面中的
DataSourceID
属性可能会有所帮助:
GridView1.DataSourceID=null非常感谢。关于第二个建议的警告是有帮助的:这样做会在第一次运行时导致空网格。如果需要完整的数据网格,但允许以后进行筛选,请将DataSourceID设置保留在.aspx文件中。