2009-04-23 121 views
1

呃!無法理解這裏發生了什麼。sqldatasource.select在顯式選擇調用時沒有考慮FilterExpression?

當在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(); 

      } 

     } 

回答

1

沒關係。正確的代碼應該是:

foreach (DataRow dr in thingie.Table.Select((string)ViewState["filtre"]; 

)){

爲數據源在DS的FilterExpression屬性不使用過濾器的選擇方法。它得到了整個事情。另一方面,DataView.Table.Select(String FilterExpression)返回所有行的數組,並進行過濾。這很酷,我解決了我自己的問題。