咩!无法理解这里发生了什么。
在SqlDataSource1上使用时,正确应用了过滤器,以正确填充相应的gridview。
话虽这么说,过滤不适用于我用于获取DataView的手动选择,用于数据库插入部分。
我做错了什么?是否有一些我不知道的事情?
SqlDataSource1.FilterExpression = (string)ViewState["filtre"];
cmdApply.Text = (string)ViewState["filtre"];
DataView thingie = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
thingie.RowFilter = (string)ViewState["filtre"];
DataView verifdv = (DataView)SqlDataSource2.Select(DataSourceSelectArguments.Empty);
verifdv.Sort = "filterClient";
SqlConnection dbconn = new SqlConnection(SqlDataSource1.ConnectionString);
foreach ( DataRow dr in thingie.Table.Rows ) {
if ( verifdv.Find(dr["orgID"]) == -1 ) {
SqlCommand addFilter = new SqlCommand("INSERT INTO dbo.usermetafilter (filterUser, filterClient) VALUES (@user, @client)", dbconn);
addFilter.Parameters.Add("@user", SqlDbType.NVarChar).Value = "dummyvalue";
addFilter.Parameters.Add("@client", SqlDbType.Int).Value = dr["orgID"];
addFilter.Connection.Open();
addFilter.ExecuteNonQuery();
addFilter.Connection.Close();
}
}
答案 0 :(得分:1)
没关系。正确的代码应该是:
foreach ( DataRow dr in thingie.Table.Select((string)ViewState["filtre"];
)){
数据源的Select方法不使用DS'FilterExpression属性中的过滤器。它得到了整个事情。另一方面,DataView.Table.Select(String FilterExpression)返回其所有行的数组,已过滤。这有多酷,我解决了自己的问题。