DataSource和DataSourceID均在“ GridView2”上定义。删除一个定义

2 c# asp.net gridview

我正在尝试从日历中选择的日期重新加载gridview。

我知道在SO上有重复的问题,但他们的答案对我不起作用

 protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    Label1.Text = Calendar1.SelectedDate.ToShortDateString();
        DataSet ds = dlObj.FillDataSet("SELECT top 5  [DName], [bloodGroup], [dateDonated] FROM [tblDonors] ORDER BY [dateDonated] DESC ", "tblDonors");
        GridView2.DataSource = ds;

        GridView2.DataBind();

        }
Run Code Online (Sandbox Code Playgroud)

方法FillDataSet()是这个

public DataSet FillDataSet(string q, string tableName)
{
    DataSet ds = new DataSet();
    try
    {
        SqlDataAdapter da = new SqlDataAdapter(q, thisConnection);
        da.Fill(ds, tableName);
        return ds;
    }
    catch (Exception)
    {
        return ds;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我单击任何日期时,就会发生此错误

Both DataSource and DataSourceID are defined on 'GridView2'.  Remove one definition.
Run Code Online (Sandbox Code Playgroud)

Irf*_*eli 5

 DataSourceID="ds"
Run Code Online (Sandbox Code Playgroud)

当您从后面的代码添加数据源时,不需要这样做。


Jah*_*mic 5

虽然一般来说,您应该真正决定是使用设计端数据源还是使用后面的代码,但在某些情况下可能最好同时使用两者。一种作弊的方法,在代码后面使用:

grid.DataSourceID = null;
grid.DataSource = dataTable;
grid.DataBind();
Run Code Online (Sandbox Code Playgroud)