我的gridview1
已与sqldatasource1
相关联,现在我使用searchBOX.text
和search_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'上定义的。删除一个定义。”“< / p>
<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" >
我该如何解决这个问题?
答案 0 :(得分:1)
在分配数据源之前,您可能会尝试将DataSourceID设置为null。
另一种方法是在PageLoad事件中以编程方式绑定数据,以便可以在标记中删除datasourceid
答案 1 :(得分:0)
此错误表示您将两个数据源附加到一个gridview。因此,您可以以编程方式或使用sqldatasource1设置gridview1的数据源。如果使用SqlDatasource填充数据,则更改sqldatasource中的select查询并使用参数化存储过程。像这样:
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的默认值分配给&#39; -1&#39;并在pageload上添加gridview1.databind()
或
删除sqldatasource1并使用您的代码搜索数据。
答案 2 :(得分:0)
从您的代码中可以清楚地看到,您正在为同一gridview使用两个数据源,其中一个是
GridView1.DataSource = ds;
另一个是
的DataSourceID =&#34; SqlDataSource1&#34;
只需删除&gt;的DataSourceID =&#34; SqlDataSource1&#34; ,因为你似乎以编程方式约束你的griview。