我想在数据库中添加一条记录,并通过点击添加在同一页面的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();
我必须在一天内完成这个项目,请帮助我。 感谢。
答案 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以下的协议,这很可能是一种常见的误导性错误消息。