Telerik RadGridView 控件过滤错误

问题描述 投票:0回答:1

我正在尝试让 Telerik RadGridview 控件进行过滤,并且选择后没有出现错误。我正在取回数据。有人能发现我做错了什么吗?

错误

咨询有关如何购买和购买产品的问题 JIT(即时)em vez desta caixa de diálogo.

例外文本 ************** Telerik.Data.Expressions.LexicalException:表达式包含无效名称:“[]”。 em Telerik.Data.Expressions.ExpressionParser.TryParse(布尔enableExceptions,ExpressionNode&ExpressionNode) em Telerik.Data.Expressions.ExpressionParser.Parse(字符串表达式,布尔值 caseSensitiveLike) em Telerik.WinControls.Data.RadCollectionView

1.set_FilterExpression(String value) em Telerik.WinControls.UI.GridViewFilterDescriptorCollection.ApplyFilter() em Telerik.WinControls.UI.GridViewFilterDescriptorCollection.OnCollectionChanged(NotifyCollectionChangedEventArgs args) em Telerik.Collections.Generic.NotifyCollection
1.InsertItem(Int32索引,T项) em Telerik.WinControls.UI.GridViewFilterDescriptorCollection.InsertItem(Int32索引,FilterDescriptor项目) em System.Collections.ObjectModel.Collection`1.Add(T 项) em Telerik.WinControls.UI.GridViewDataColumn.SetFilterDescriptor(FilterDescriptor 值) em Telerik.WinControls.UI.GridHeaderCellElement.filterPopup_FilterConfirmed(对象发送者,EventArgs e) em Telerik.WinControls.UI.BaseFilterPopup.OnFilterConfirmed() em Telerik.WinControls.UI.RadListFilterPopup.OnButtonOkClick(EventArgs e) em Telerik.WinControls.UI.RadListFilterPopup.ButtonOK_Click(对象发送者,EventArgs e) em Telerik.WinControls.RadElement.OnClick(EventArgs e) em Telerik.WinControls.UI.RadButtonItem.OnClick(EventArgs e) em Telerik.WinControls.UI.RadButtonElement.OnClick(EventArgs e) em Telerik.WinControls.RadElement.DoClick(EventArgs e) em Telerik.WinControls.RadElement.RaiseBubbleEvent(RadElement 发送者,RotedEventArgs args) em Telerik.WinControls.RadItem.RaiseBubbleEvent(RadElement 发送者,RotedEventArgs args) em Telerik.WinControls.RadElement.RaiseRoulatedEvent(RadElement 发送者,RoatedEventArgs args) em Telerik.WinControls.RadElement.DoMouseUp(MouseEventArgs e) em Telerik.WinControls.ComponentInputBehavior.OnMouseUp(MouseEventArgs e) em Telerik.WinControls.RadControl.OnMouseUp(MouseEventArgs e) em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons 按钮, Int32 点击) em System.Windows.Forms.Control.WndProc(Message& m) em System.Windows.Forms.ScrollableControl.WndProc(Message& m) em Telerik.WinControls.RadControl.WndProc(Message& m) em Telerik.WinControls.UI.RadPopupControlBase.WndProc(Message& m) em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) em System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd,Int32 msg,IntPtr wparam,IntPtr lparam)

数据加载C#

```
private void usrAjuda_Load(object sender, EventArgs e){
    JArray JRecords = new JArray();
    retStatEx ret = Functions.getSQLreader(strSelect,"",ref JRecords);
    ApiResultObj ent = Newtonsoft.Json.JsonConvert.DeserializeObject<ApiResultObj>(ret.retString);

    if (ent.ErrorCode == 0){
        grdDados.DataSource = JRecords;
        grdDados.Columns[0].Width = 80;
    }
}
```

表单设计师:

```
// 
// grdDados
// 
this.grdDados.AutoSizeRows = true;
this.grdDados.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular,
   System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.grdDados.Location = new System.Drawing.Point(12, 12);
// 
// 
// 
this.grdDados.MasterTemplate.AllowAddNewRow = false;
this.grdDados.MasterTemplate.AllowColumnReorder = false;
this.grdDados.MasterTemplate.AllowDeleteRow = false;
this.grdDados.MasterTemplate.AllowEditRow = false;
this.grdDados.MasterTemplate.AutoSizeColumnsMode =   
   Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
this.grdDados.MasterTemplate.EnableFiltering = true;
this.grdDados.MasterTemplate.ShowFilteringRow = false;
this.grdDados.MasterTemplate.ShowHeaderCellButtons = true;
this.grdDados.MasterTemplate.ViewDefinition = tableViewDefinition1;
this.grdDados.Name = "grdDados";
this.grdDados.ReadOnly = true;
this.grdDados.ShowGroupPanel = false;
this.grdDados.ShowHeaderCellButtons = true;
this.grdDados.Size = new System.Drawing.Size(1062, 404);
this.grdDados.TabIndex = 0;
this.grdDados.ThemeName = "Crystal";
this.grdDados.CellDoubleClick += new 
   Telerik.WinControls.UI.GridViewCellEventHandler(this.grdDados_CellDoubleClick);
```
c# winforms telerik-grid
1个回答
0
投票

问题是 JArray 上缺少数据类型。 转换为数据表,填写数据类型,错误解决。

        // Function to convert JArray to DataTable
    public static DataTable ConvertJArrayToDataTable(JArray jsonArray)
    {
        DataTable dataTable = new DataTable();

        // Check if the array is not empty
        if (jsonArray.Count > 0)
        {
            // Dynamically add columns based on the first object in the array
            foreach (JProperty prop in jsonArray[0])
            {
                dataTable.Columns.Add(prop.Name, typeof(string));  // Add all columns as strings
            }

            // Iterate through the JArray and add rows to the DataTable
            foreach (JObject obj in jsonArray)
            {
                DataRow row = dataTable.NewRow();

                // Populate the row with values from the JObject
                foreach (JProperty prop in obj.Properties())
                {
                    if (prop.Value.Type == JTokenType.Integer)
                        row[prop.Name] = (int)prop.Value;
                    else if (prop.Value.Type == JTokenType.Boolean)
                        row[prop.Name] = (bool)prop.Value;
                    else
                        row[prop.Name] = prop.Value.ToString();  // Default to string


                }

                dataTable.Rows.Add(row);  // Add the row to the DataTable
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.