MvcxGridview,数据类型为System.Byte []

时间:2014-05-16 02:20:48

标签: devexpress mvcxgridview

我使用MvcxGridView来绑定DataTable模型,我遇到了DataColumn数据类型为System.Byte[]的问题。

  1. 当我查看数据时,gridview不显示值,只显示System.Byte[]。我希望GridView在该列中显示图片。
  2. 当我保存数据时,收到此消息:

      

    来自' System.String'的无效演员表到' System.Byte []'

  3. 我该如何解决这些问题?

    以下是我的代码:

    @using System.Data;
    @model TestPA6MVC.Models.EntityModelForViewDataSettingGrid
    
    @functions{
        MVCxGridViewCommandColumn CreateCommandColumn(string AllowEdit,string AllowAdd)
        {
            MVCxGridViewCommandColumn column = new MVCxGridViewCommandColumn();
            column.Visible = true;
            column.NewButton.Visible = (AllowAdd.ToLower()=="true")?true:false;
            column.DeleteButton.Visible = (AllowEdit.ToLower() == "true") ? true : false; ;
            //column.EditButton.Visible = true;
            return column;
        }
    }
    
    
    @{
    var grid = Html.DevExpress().GridView(
        settings => {
            settings.Name = "gvEditing";
            settings.CallbackRouteValues = new {
                Controller = "Home", Action = "GridViewPartial",
                ViewName = Model.ViewName,
                PrimaryKeyCollection = Model.PrimaryKeyCollection,
                TableEditorList = Model.TableEditorList,
                ColumnComboBoxCollection = Model.ColumnComboBoxCollection,
                ColumnReadOnlyCollection = Model.ColumnReadOnlyCollection,
                ColumnHideCollection = Model.ColumnHideCollection,
                ParamNameCollection = Model.ParamNameCollection,
                DataForParamCollection = Model.DataForParamCollection,
                ParamTypeCollection = Model.ParamTypeCollection,
                AllowAdd = Model.AllowAdd,
                AllowEdit = Model.AllowEdit
            };
            settings.SettingsEditing.AddNewRowRouteValues = new { Controller = "Home", Action = "GridViewPartialAddNew", ViewName = Model.ViewName };
            settings.SettingsEditing.UpdateRowRouteValues = new { Controller = "Home", Action = "GridViewPartialUpdate", ViewName = Model.ViewName };
            settings.SettingsEditing.DeleteRowRouteValues = new { Controller = "Home", Action = "GridViewPartialDelete", ViewName = Model.ViewName };
            settings.SettingsEditing.BatchUpdateRouteValues = new {
                Controller = "Home", Action = "BatchEditingUpdateModel",
                ViewName = Model.ViewName,
                PrimaryKeyCollection = Model.PrimaryKeyCollection,
                TableEditorList = Model.TableEditorList,
                ColumnComboBoxCollection = Model.ColumnComboBoxCollection,
                ColumnReadOnlyCollection = Model.ColumnReadOnlyCollection,
                ColumnHideCollection = Model.ColumnHideCollection,
                ParamNameCollection = Model.ParamNameCollection,
                DataForParamCollection = Model.DataForParamCollection,
                ParamTypeCollection = Model.ParamTypeCollection,
                AllowAdd = Model.AllowAdd,
                AllowEdit = Model.AllowEdit
            };
            if (Model.AllowEdit.ToLower() == "true")
            {
                settings.SettingsEditing.Mode = GridViewEditingMode.Batch;//Kieu view chinh sua
            }
            else { settings.SettingsEditing.Mode = GridViewEditingMode.PopupEditForm; }
            settings.SettingsBehavior.ConfirmDelete = true;//Cho phep hien thi thong bao xac nhan
            settings.SettingsBehavior.ColumnResizeMode = ColumnResizeMode.Control;//Cho phep chinh sua do rong cot
            settings.Width = 800;//Chieu rong cua gridview
            settings.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
            settings.SettingsPager.Mode = GridViewPagerMode.ShowPager;
            settings.SettingsPager.PageSize = 50;
            settings.Settings.VerticalScrollableHeight = 300;
            settings.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
    
            settings.SettingsPager.Visible = true;
            settings.Settings.ShowGroupPanel = true;
            settings.Settings.ShowFilterRow = true;
            settings.Settings.ShowHeaderFilterButton = true;//Hien thi bo loc cho column
    
            //Tao cot gia de tranh tinh trang hien thi lai cac Column an khi Callback
            MVCxGridViewColumn fakeco = new MVCxGridViewColumn();
            fakeco.Visible = false;
            fakeco.Width = 0;
            fakeco.EditFormSettings.Visible = DefaultBoolean.False;
            settings.Columns.Add(fakeco);
    
            settings.SettingsBehavior.AllowSelectByRowClick = true;
            settings.DataBound = (sender, e) =>
            {
    
                //Build Column Tool  Automatic
                ((MVCxGridView)sender).Columns.Insert(0, CreateCommandColumn(Model.AllowEdit,Model.AllowAdd));
                //Add custom Column
                foreach (var child in Model.ModelForDisplayColumnList)
                {
                    MVCxGridViewColumn dc = new MVCxGridViewColumn();
                    dc.Caption = child.Caption;
                    dc.FieldName = child.ColumnName;
                    if(child.IsHidden)//Neu de an hoan toan se khong lay duoc du lieu da chinh sua
                    { dc.Width = 0; }
                    //dc.Visible = !child.IsHidden;
                    dc.ReadOnly = child.IsReadOnly;
                    switch (child.DataType)
                    {
                        case "datetime":
                            dc.ColumnType = MVCxGridViewColumnType.DateEdit;
                            var DateEditProperties = dc.PropertiesEdit as DateEditProperties;
                            DateEditProperties.DisplayFormatString = "dd/MM/yyyy hh:mm tt";
                            //Cho phep chinh ngay, gio
                            DateEditProperties.UseMaskBehavior = true;
                            //Dinh dang hien thi khi chinh sua
                            DateEditProperties.EditFormat = EditFormat.Custom;
                            DateEditProperties.EditFormatString = "dd/MM/yyyy hh:mm tt";
                            DateEditProperties.TimeSectionProperties.Visible = true;//Hien khung chinh gio
                            break;
                        case "combobox":
                            dc.ColumnType = MVCxGridViewColumnType.ComboBox;
                            var DropDownEditProperties = dc.PropertiesEdit as ComboBoxProperties;
                            DropDownEditProperties.DataSource = child.DataSourceForComboBoxColumn;
                            DropDownEditProperties.ValueField = child.DataSourceForComboBoxColumn.Columns[0].ColumnName;
                            DropDownEditProperties.TextFormatString = "{0}";
                            foreach (DataColumn childcolumn in child.DataSourceForComboBoxColumn.Columns)
                            {
                                DropDownEditProperties.Columns.Add(childcolumn.ColumnName, childcolumn.ColumnName);
                            }
                            break;
                        case "boolean":
                        case "bit":
                            dc.ColumnType = MVCxGridViewColumnType.CheckBox;
                            break;
                        case "byte[]":
                            dc.ColumnType = MVCxGridViewColumnType.BinaryImage;
                            //var ImageEditProperties = dc.PropertiesEdit as BinaryImageEditProperties;
                            //ImageEditProperties.ImageWidth = 50;
                            //ImageEditProperties.ImageHeight = 50;
                            break;
                        //case "string":
                        //    dc.ColumnType = MVCxGridViewColumnType.ComboBox;
                        //    var ComboBoxEditProperties = dc.PropertiesEdit as ComboBoxProperties;
                        //    ComboBoxEditProperties.DataSource = ModelForDisplayColumnList;
                        //    ComboBoxEditProperties.TextField = "DataType";
                        //    ComboBoxEditProperties.ValueField = "Caption";
                        //    break;
                    }
                    ((MVCxGridView)sender).Columns.Add(dc);
                }
            };
    
            settings.KeyFieldName = Model.PrimaryKeyCollection;
    
        });
        if (ViewData["EditError"] != null){
        grid.SetEditErrorText((string)ViewData["EditError"]);
    }
    }
    
    
    @grid.Bind(Model.DataSourceForGrid).GetHtml()
    

0 个答案:

没有答案