Как создать DataView или GridView из запроса, а не напрямую из базы данных в DevExpress MVC? - PullRequest
0 голосов
/ 28 марта 2019

У меня проблемы с созданием GridView в DevExpress, который может отфильтровывать строки.Идея такова:

1> Log In
2> Query: 
    "Select * from tblExample where UserName = '" + username + "';"
3> Results show in GridView (DataView would also be okay)

Проблема в том, что я могу только получить всю таблицу из базы данных

Самое близкое, что я получил, - это получить все строки из модели, а затем выполнить запрос итолько запись результатов, если имя пользователя совпадает.Тем не менее, строки по-прежнему генерируются как пробелы.

Я также пытался создать обычную DataTable (не DevExpress) и отображать ее в формате html, однако это не так часто, как было бы.

````

    @{

        var grid = Html.DevExpress().GridView(settings =>
        {
            settings.Name = "tInvRes";
            settings.CallbackRouteValues = new { Controller = "t_Inventory1", Action = "tInvResPartial" };
            settings.SettingsEditing.AddNewRowRouteValues = new { Controller = "t_Inventory1", Action = "tInvResPartialAddNew" };
            settings.SettingsEditing.UpdateRowRouteValues = new { Controller = "t_Inventory1", Action = "tInvResPartialUpdate" };
            settings.SettingsEditing.DeleteRowRouteValues = new { Controller = "t_Inventory1", Action = "tInvResPartialDelete" };
            settings.SettingsEditing.Mode = GridViewEditingMode.EditFormAndDisplayRow;
            settings.SettingsBehavior.ConfirmDelete = true;
            settings.CommandColumn.Visible = false;
            settings.CommandColumn.ShowNewButton = true;
            settings.CommandColumn.ShowDeleteButton = true;
            settings.CommandColumn.ShowEditButton = true;
            settings.KeyFieldName = "ControlNumber";
            settings.SettingsPager.Visible = true;
            settings.Settings.ShowGroupPanel = true;
            settings.Settings.ShowFilterRow = true;
            settings.SettingsBehavior.AllowSelectByRowClick = true;
            settings.SettingsAdaptivity.AdaptivityMode = GridViewAdaptivityMode.Off;
            settings.SettingsAdaptivity.AdaptiveColumnPosition = GridViewAdaptiveColumnPosition.Right;
            settings.SettingsAdaptivity.AdaptiveDetailColumnCount = 1;
            settings.SettingsAdaptivity.AllowOnlyOneAdaptiveDetailExpanded = false;
            settings.SettingsAdaptivity.HideDataCellsAtWindowInnerWidth = 0;
                settings.Columns.Add("ControlNumber");
                settings.Columns.Add("UserName");
                settings.Columns.Add("PartNumber");
                settings.Columns.Add("Price");
                settings.Columns.Add(column =>
                {
                    column.Caption = "TESTCOL";
                    column.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                    column.CellStyle.HorizontalAlign = HorizontalAlign.Center;
                    column.UnboundType = DevExpress.Data.UnboundColumnType.String;
                    column.Settings.GroupInterval = DevExpress.XtraGrid.ColumnGroupInterval.Value;
                    column.Settings.AllowGroup = DefaultBoolean.True;
                    column.Settings.AllowDragDrop = DefaultBoolean.True;
                    column.SetDataItemTemplateContent(c =>
                    {
                        string cono = "";

                        string queryStringg = "SELECT CONTROLNUMBER FROM [dbo].[tblExample] WHERE USERNAME = '" + Session["UserName"].ToString() + "'";
                        string connectionStringg = WebConfigurationManager.AppSettings["sqlcon"];

                        using (SqlConnection connection = new SqlConnection(connectionStringg))
                        {
                            SqlCommand command = new SqlCommand(queryStringg, connection);
                            connection.Open();
                            SqlDataReader reader = command.ExecuteReader();
                            try
                            {
                                while (reader.Read())
                                {
                                    cono = reader[0].ToString();
                                }
                            }
                            finally
                            {
                                // Always call Close when done reading.
                                reader.Close();
                            }
                        }

                ViewContext.Writer.Write(string.Format("<button id='addbtn" + c.KeyValue + "' type='button' onclick='addCart(" + c.KeyValue + ", " +     cono + ")'>Add</button>"));
        });
    });
        });
        if (ViewData["EditError"] != null)
        {
            grid.SetEditErrorText((string)ViewData["EditError"]);
            }
        }
        @grid.Bind(Model).GetHtml()

````

Выходные строки обычно выглядят так:

1    Jack    14u4    14.00    1
2    Jack    14f4    12.50    2
3    Jill    65v2    11.00    3
4    Jack    341c    63.00    4
5    John    4u48    16.00    5
6    Jack    3rf3    20.00    6

С кодом, который у меня есть:


1    Jack    14u4    14.00    1
2    Jack    14f4    12.50    2

4    Jack    341c    63.00    4

6    Jack    3rf3    20.00    6

Ожидаемый результат:

1    Jack    14u4    14.00    1
2    Jack    14f4    12.50    2
4    Jack    341c    63.00    4
6    Jack    3rf3    20.00    6
...