一千萬個為什麽

搜索

單個選項列表的動態soql


我有一個動態的soql如下。 string remainingbetquery ='select id,name,uwBrandr.Name,MarketClusterc,ProductCategorySub_Divisionc from uwbet_c where (id not in :betfollowed) and (id not in :betowners) ';

query = query + 'and BETr.ProductCategorySub_Divisionc ='+'\''+categories+'\'';

由於某種原因,它沒有正常工作並返回正確的值。 categories也是由代碼生成的動態選項列表。因此,當用戶在前端選擇一個值時,它將被填充到控制器中 更新了類別的控制器代碼 public List categories { get { if (categories == null) {

    categories = new List();
    Schema.DescribeFieldResult field = uw_bet__C.Product_Category_Sub_Division__c .getDescribe();

    for (Schema.PicklistEntry f : field.getPicklistValues())
      categories.add(f.getLabel());

  }
  return categories;          
}
set;

}

Pagecode for picklist Category

{!tech}

最佳答案

在這種情況下,您需要使用Visualforce的內置組件而不是HTML元素 apex:selectList標簽,如果您希望用戶輸入影響控制器的狀態。

您似乎也不需要使用動態SOQL。如果切換到使用預編譯的SOQL([]語法),您將在查詢中獲得一些額外的編譯時驗證,並從一些額外的安全性中受益。 SOQL有一種特殊的語法,用於將變量的值綁定到查詢中,而無需手動執行字符串操作:在變量名前加上::字符。 使用這兩個更改重寫您的查詢將如下所示: [select id,name,uwBrandr.Name,MarketClusterc,ProductCategorySub_Divisionc from uwbetc where (id not in :betfollowed) and (id not in :betowners) and BETr.ProductCategorySubDivision__c = :categories]

轉載註明原文: 單個選項列表的動態soql

猜你喜歡