【问题标题】:Filter expression 'FirstName ' does not evaluate to a Boolean term过滤器表达式 'FirstName' 不计算为布尔项
【发布时间】:2023-03-26 19:52:01
【问题描述】:

我正在绑定一个 DropDownList,我在第一列中有 FirstName,在第二列中有 LastName 作为 DDL

protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e)
{ 
    DataTable myTable = new DataTable();
    DataColumn productIDColumn = new DataColumn("FirstName");
    DataColumn productNameColumn = new DataColumn("LastName");

    myTable.Columns.Add(productNameColumn);
    DataSet ds = new DataSet();

    ds = get();
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        var categoryID = (e.Row.Cells[0].Text);
        var expression = "FirstName "+categoryID;

        DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");

        DataRow[] rows = ds.Tables[0].Select(expression);
        foreach (DataRow row in rows)
        {
            DataRow newRow = myTable.NewRow();
            newRow["UserId"] = row["UserId"];
            newRow["LastName"] = row["LastName"];
            myTable.Rows.Add(newRow);
        }

        ddl.DataSource = myTable;
        ddl.DataTextField = "LastName";
        ddl.DataValueField = "UserId";
        ddl.DataBind();
    }
}

我在 DataRow[] rows = ds.Tables[0].Select(expression); 处收到类似 Filter expression 'FirstName ' does not evaluate to a Boolean term 的错误;

谁能帮我解决这个问题?

【问题讨论】:

  • 在这种情况下,“DDL”是指下拉列表吗?

标签: c# asp.net datatable dataset


【解决方案1】:

你的表达没有任何意义。我会期待以下内容:

var expression = "FirstName = 'John'";

var expression = "CategoryId = 42";

查看 Select 方法的文档:http://msdn.microsoft.com/en-us/library/det4aw50.aspx

【讨论】:

  • 哎呀我错过了,但即使我喜欢 DDL 是空的。
【解决方案2】:

您需要比较表达式中的 2 个值。阅读这篇文章:C# DataTable Select

【讨论】:

  • 即使我比较了值,DDL 也是空的。
  • 你确定你的表达是对的吗?您将 FirstName 与 ID 进行比较(或者这就是它的样子): var expression = "FirstName = " + categoryID;
  • 事情就是categoryid也是空的不知道为什么??
  • 将 CategoryID 键添加到 GridView1 的 DataKeyNames。然后,在您的 GridView1_RowDataBound1 事件中获取 ID: if (e.Row.RowType == DataControlRowType.DataRow) { DataRowView rowView = (DataRowView)e.Row.DataItem; int myDataKey = Convert.ToInt32(rowView["categoryID"]); }
  • 但是在填充 DDL 时,数据表是空的。
猜你喜欢
  • 2018-05-31
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
相关资源
最近更新 更多