如何在代码隐藏中将实体数据源与子查询一起使用



我在 Telerik 中使用RadGrid,我正在尝试在代码隐藏中使用实体DataSource。 最初,页面加载时RadGrid加载正常,但是当我尝试根据TextBox输入值过滤RadGrid值时,我遇到了问题。我收到此错误

"PART_NUMBER"无法在当前范围或上下文中解决。 确保所有引用的变量都在范围内,这是必需的 将加载架构,并正确引用命名空间。

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        EntityDataSource1.CommandText = "DetailData";
    }        
}
 protected void FilterBtn_Click(object sender, Telerik.Web.UI.ImageButtonClickEventArgs e)
 {
     string partNumber = PartNumberTB.Text;
     EntityDataSource1.CommandText = @"SELECT value p FROM DetailData as p
 where REFERENCE_NUM in (select distinct REFERENCE_NUM from DetailData
  where (DetailData.PART_NUMBER like  '" + partNumber + "%' or PART_NUMBER = ''))";          
 }

尝试在查询中使用别名,看看是否有帮助。

SELECT value p FROM DetailData as p 
WHERE p.REFERENCE_NUM in (select distinct s.REFERENCE_NUM from DetailData as s
WHERE (p.PART_NUMBER like  '" + partNumber + "%' or s.PART_NUMBER = ''))

下面是对带有别名的子查询的引用

编辑:

您可以使用以下代码在 w3schools - SQL 语句上测试查询:

SELECT p.* FROM OrderDetails AS p
WHERE p.OrderID IN (SELECT DISTINCT s.OrderID FROM OrderDetails AS s 
WHERE (p.OrderDetailID LIKE '2%' OR s.OrderDetailID = 20))

最新更新