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

时间:2014-02-11 19:02:58

标签: c# asp.net 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();

        }

方法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;
    }
}

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

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

3 个答案:

答案 0 :(得分:4)

 DataSourceID="ds"

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

答案 1 :(得分:2)

虽然一般来说,你应该真的决定是设计侧数据源还是使用代码,但有时可能会更好地使用两者。在使用代码中欺骗一点的一种方法:

grid.DataSourceID = null;
grid.DataSource = dataTable;
grid.DataBind();

答案 2 :(得分:0)

Calendar1_SelectionChanged中,您只需致电

  

GridView2.DataBind()

并处理你想要在

中做的任何事情
  

DataSourceID_Selecting

事件通过更新e.Result