【问题标题】:on Search Button ....Both DataSource and DataSourceID are defined on 'GridView1'. Remove one definition在搜索按钮 ....DataSource 和 DataSourceID 都在“GridView1”上定义。删除一个定义
【发布时间】:2015-02-20 03:11:16
【问题描述】:

我的gridview1 已连接到sqldatasource1,现在我使用searchBOX.textsearch_button 创建一个搜索命令

var ds = new DataSet();

            using (var newconnection = new SqlConnection(ConfigurationManager.ConnectionStrings["User_DB_Connectionstring"].ConnectionString))
            {
                strconn = "select * from User_TBL_DB where (Firstname like '%@search%')";
                var xp = new SqlCommand(strconn, newconnection);
                xp.CommandType = CommandType.Text;
                xp.Parameters.AddWithValue("@search", SearchBOX.Text);

                newconnection.Open();

                xp.ExecuteNonQuery();
                var da = new SqlDataAdapter();
                da.SelectCommand = xp;
               da.Fill(ds, "Name");
            }

            GridView1.DataSource = ds;
            GridView1.DataBind();

我的GridView1.Datasource =ds; 和我的datasourceID 有问题datasourceID="sqlDatasource1" 它总是给我这个错误“”“DataSource 和DataSourceID 都在'GridView1' 上定义。删除一个定义。”“

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Align="Center" 
    BackColor="#DEBA84" BorderColor="#DEBA84" BorderWidth="1px" 
    CellPadding="3" ShowFooter="True" 
    Width="713px" BorderStyle="None" CellSpacing="2" 
    onrowcommand="GridView1_RowCommand" DataSourceID="SqlDataSource1" 
    onrowdeleting="GridView1_RowDeleting1" AutoGenerateSelectButton="True" 
    onselectedindexchanged="GridView1_SelectedIndexChanged" 
    AllowPaging="True" >

我将如何解决这个问题?

【问题讨论】:

  • 是的,我正在使用数据源来填充数据

标签: c# asp.net gridview


【解决方案1】:

您可以尝试在分配数据源之前将 DataSourceID 设置为 null。

另一种方法是在 PageLoad 事件中以编程方式绑定数据,以便可以在标记中删除 datasourceid

【讨论】:

  • 谢谢 ^_^ 它有效我只是将我的数据源分配给 null 像这样.. gridview1.DataSourceID="";然后我使用代码连接我的gridview然后当我需要添加编辑或删除时我再次将我的DataSourceID分配给SqlDataSource1,就像这个gridview1.DataSourceID =“SqlDataSource1”但问题是......当我更改整个页面时,整个页面正在刷新或重新打开DatasourceID :-D .. 所以当前活动消失了-_-
【解决方案2】:

这个错误意味着你有两个数据源附加到一个gridview。因此,您可以通过编程方式或使用 sqldatasource1 设置 gridview1 的数据源。如果您使用 SqlDatasource 填充数据,则更改 sqldatasource 中的选择查询并使用参数化存储过程。像这样:

     CREATE PROCEDURE StoredProcedure
            /*
            (
            @parameter1 int = 5,
            @parameter2 datatype OUTPUT
            )
            */
        @search nvarchar(1000)
        AS
            /* SET NOCOUNT ON */
    BEGIN
        SET NOCOUNT ON
          /* Variable Declaration */
        Declare @sql_query nvarchar(4000)
        Declare @parameterDefination As Nvarchar(2000)
          /* Build the Transact-SQL String with the input parameters */ 
        Set @sql_query='select * from User_TBL_DB where (1=1) '
         /* check for the condition and build the WHERE clause accordingly */
        If Firstname <> '-1' 
         Set @sql_query = @sql_query + 'AND (Firstname like "%@search%")'
        /* Specify Parameter Format for all input parameters included 
             in the stmt */
        Set @parameterDefination = '@search nvarchar(1000)'
         /* Execute the Transact-SQL String with all parameter value's 
               Using sp_executesql Command */
        Execute sp_Executesql @sql_query, @parameterDefination, @search
        If @@ERROR <> 0 GoTo ErrorHandler
            Set NoCount OFF
            Return(0) 
        ErrorHandler:
            Return(@@ERROR)
    END

在配置 Sqldatasource1 时将 @search 的默认值分配给 '-1' 并在页面加载时添加 gridview1.databind()

或者

删除 sqldatasource1 并使用您的代码搜索数据。

【讨论】:

  • ahm ...我不确定我是否可以使用这个 Shatabda Dhar Gupta 爵士,因为我不认为您使用的是 C# 语言或 ASP.NET .. 因为我都尝试过..所有语法都不起作用..但是再次感谢您尝试帮助我..也有可能...我只是不明白这一点..可能是因为这超出了我的编程知识-_ -
  • 你必须在你的数据库中创建一个存储过程;因此,这是用于创建存储过程的 SQL。那么你需要在你的 asp.net 页面中调用存储过程。以下是调用存储过程的方法:stackoverflow.com/questions/1260952/…
【解决方案3】:

从您的代码中可以清楚地看出,您正在为同一个 gridview 使用两个数据源,一个是

GridView1.DataSource = ds;

另一个是

DataSourceID="SqlDataSource1"

只需删除 > DataSourceID="SqlDataSource1" ,因为您似乎正在以编程方式绑定 griview。

【讨论】:

    猜你喜欢
    • 2012-04-29
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多