DataSource和DataSourceID都在GridView1'上定义。删除一个定义

时间:2017-08-08 07:58:54

标签: c# gridview data-binding

我想在数据库中添加一条记录,并通过点击添加在同一页面的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:DataSource和DataSourceID都在' GridView1'上定义。删除一个定义。"

并且此错误指向:

GridView1.DataBind();

我必须在一天内完成这个项目,请帮助我。 感谢。

2 个答案:

答案 0 :(得分:0)

“DataSource和DataSourceID都是在X上定义的”,如果您为已定义GridView属性值的DataSourceID的数据源设置为某个数据源,则通常会发生 ASPX页面标记。

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

if (ds.Tables["logtbl"].Rows.Count > 0)
{
    GridView1.DataSourceID = null; // string.Empty can also used
    GridView1.DataSource = ds.Tables[0];
    GridView1.DataBind();
}

或从DataSourceID页面标记中删除GridView属性:

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

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

参考文献:

Both DataSource and DataSourceID are defined on ‘GridView1’. Remove one definition.

Both DataSource and DataSourceID are defined on 'GridView2'. Remove one definition

答案 1 :(得分:0)

在上面的错误语法中进行搜索后,遇到这些问题的人会感到冷漠并点击此线程,只需提供一个FYI:

如果有合理的可能没有代码更改-或是否有代码更改,但它们应该与错误无关-请检查应用程序使用的TLS级别,并确保.Net Framework级别支持该代码。 / p>

我只是帮助一个客户解决了这个确切的错误,并且发现-尽管有麻烦,但问题是由于在操作系统级别禁用了TLS 1.2版以下的协议引起的。

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