【问题标题】:Both DataSource and DataSourceID are defined on 'GridView2'. Remove one definitionDataSource 和 DataSourceID 都在“GridView2”上定义。删除一个定义
【发布时间】:2014-02-11 19:02:57
【问题描述】:

我正在尝试根据从日历中选择的日期重新加载网格视图。

我知道关于 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.

【问题讨论】:

  • but their answers did not work for me 为什么?
  • 显示您的 gridview 标记.. 确保您没有在 aspx 页面上设置您的 gridview 的 DataSourceID 属性。
  • @IrfanTahirKheli codepad.org/Xly3u4Yj
  • 从您的代码 DataSourceID="ds" 中获取此信息并尝试

标签: c# asp.net gridview


【解决方案1】:
 DataSourceID="ds"

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      Calendar1_SelectionChanged 中,您只需调用

      GridView2.DataBind()

      并处理您在

      中尝试做的任何事情

      DataSourceID_Selecting

      通过更新 e.Result 的事件

      【讨论】:

      • 显示错误 DataSource 和 DataSourceID 都定义在 'GridView2' 上。在线删除一个定义:GridView2.Databind()
      猜你喜欢
      • 1970-01-01
      • 2012-04-29
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多