protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridEditableItem && e.Item.IsInEditMode)
            {
                GridEditableItem editedItem = e.Item as GridEditableItem;
                GridEditManager  editMan    = editedItem.EditManager;
                foreach (GridViewColumn column in Columns)
                {
                    if (column is GridViewDropDownListColumn)
                    {
                        // Binding DDL type fields
                        GridViewDropDownListColumn ddlColumn = column as GridViewDropDownListColumn;
                        if (!ddlColumn.IsReadOnly)
                        {
                            GridTemplateColumnEditor templateEditor = (GridTemplateColumnEditor)editMan.GetColumnEditor(ddlColumn.DataFieldKey);
                            RadComboBox ddl = templateEditor.ContainerControl.FindControl(ddlColumn.DataFieldKey) as RadComboBox;
                            if (ddlColumn.enableEmptyItem)
                            {
                                ddl.Items.Add(new RadComboBoxItem(BindingListItem.EmptyText, BindingListItem.EmptyValue));
                                ddl.AppendDataBoundItems = true;
                            }
                            ddl.DataSource     = ddlColumn.ListDataSource;
                            ddl.DataValueField = BindingListItem.ValueProperty;
                            ddl.DataTextField  = BindingListItem.TextProperty;
                            ddl.DataBind();
                            // Set current value
                            //if (e.Item is GridDataInsertItem || e.Item is GridEditFormInsertItem)
                            if (e.Item is IGridInsertItem)
                            {
                                ddl.SelectedValue = null;
                            }
                            else
                            {
                                object currentValue = DataBinder.Eval(e.Item.DataItem, ddlColumn.DataFieldKey);
                                if (currentValue != null)
                                {
                                    ddl.SelectedValue = currentValue.ToString();
                                }
                            }
                        }
                    }
                    else if (column is GridViewLinkButtonColumn)
                    {
                        // Binding Link button type fields
                        GridViewLinkButtonColumn linkColumn = column as GridViewLinkButtonColumn;
                        if (!linkColumn.IsReadOnly)
                        {
                            GridTemplateColumnEditor templateEditor = (GridTemplateColumnEditor)editMan.GetColumnEditor(linkColumn.DataTextField);
                            RadTextBox textBox = templateEditor.ContainerControl.FindControl(linkColumn.DataTextField) as RadTextBox;

                            // Set current value
                            if (e.Item is IGridInsertItem)
                            {
                                textBox.Text = null;
                            }
                            else
                            {
                                object currentValue = DataBinder.Eval(e.Item.DataItem, linkColumn.DataTextField);
                                if (currentValue != null)
                                {
                                    textBox.Text = currentValue.ToString();
                                }
                            }
                        }
                    }
                    else if (column is GridViewDataDateColumn)
                    {
                    }
                }
            }
        }
Example #2
0
        private void DefineColumns()
        {
            foreach (SubjectFieldDto field in CurrentSubject.SubjectFields)
            {
                if (field.IsShowInGrid)
                {
                    if (field.FieldKey.Equals(ControlledFieldName, StringComparison.OrdinalIgnoreCase))
                    {
                        continue;
                    }
                    // Todo: implement multi-language
                    string headerText = field.GetFieldLabelByLanguage(CurrentUserContext.CurrentLanguage.Id);
                    if (field.IsLinkInGrid && field.DucType != DucTypes.Lookup && field.DucType != DucTypes.Pickup)
                    {
                        GridViewLinkButtonColumn hc = new GridViewLinkButtonColumn(headerText, field.FieldKey);
                        ucListManager.Columns.Add(hc);
                        hc.EditColumnIndex             = field.ColIndex;
                        hc.DataNavigateUrlFormatString = ServerPath + field.LookupSubjectManageUrlFormatString;
                        if (field.DucType == DucTypes.Lookup && field.LookupSubjectId != null)
                        {
                            // Link to another subject by LookupSubjectId
                            hc.DataNavigateUrlField = field.FieldKey;
                        }
                        else
                        {
                            // Link to current subject
                            if (MasterInstance != null)
                            {
                                // Add MasterInstance
                                hc.DataNavigateUrlFormatString += string.Format("&{0}={1}", QryMasterInstanceId, MasterInstance.Id);
                            }
                            hc.DataNavigateUrlField = BaseDto.FLD_StringId;
                        }
                    }
                    else
                    {
                        switch (field.DucType)
                        {
                        case DucTypes.Lookup:
                        case DucTypes.Pickup:
                            GridViewDropDownListColumn ddlCol = new GridViewDropDownListColumn(headerText, field.FieldKey, field.ListDataSource);
                            ucListManager.Columns.Add(ddlCol);
                            ddlCol.IsReadOnly      = field.IsReadonly;
                            ddlCol.enableEmptyItem = !field.IsRequired;
                            ddlCol.EditColumnIndex = field.ColIndex;
                            ddlCol.DropDownHeight  = WebContext.Current.ApplicationOption.DropDownHeight;
                            break;

                        case DucTypes.Text:
                        case DucTypes.TextArea:
                        case DucTypes.Currency:
                        case DucTypes.Email:
                        case DucTypes.Formula:
                        case DucTypes.Integer:
                        case DucTypes.Number:
                        case DucTypes.Percentage:
                            GridViewDataTextColumn textCol = new GridViewDataTextColumn(headerText, field.FieldKey);
                            ucListManager.Columns.Add(textCol);
                            textCol.IsReadOnly      = field.IsReadonly;
                            textCol.EditColumnIndex = field.ColIndex;
                            if (field.MaxLength.HasValue)
                            {
                                textCol.MaxLength = field.MaxLength.Value;
                            }
                            break;

                        case DucTypes.Date:
                            GridViewDataDateColumn dateCol = new GridViewDataDateColumn(headerText, field.FieldKey);
                            ucListManager.Columns.Add(dateCol);
                            dateCol.IsReadOnly      = field.IsReadonly;
                            dateCol.EditColumnIndex = field.ColIndex;
                            break;

                        case DucTypes.Datetime:
                            GridViewDataDateTimeColumn dateTimeCol = new GridViewDataDateTimeColumn(headerText, field.FieldKey);
                            ucListManager.Columns.Add(dateTimeCol);
                            dateTimeCol.IsReadOnly      = field.IsReadonly;
                            dateTimeCol.EditColumnIndex = field.ColIndex;
                            break;

                        case DucTypes.Time:
                            GridViewDataTimeColumn timeCol = new GridViewDataTimeColumn(headerText, field.FieldKey);
                            ucListManager.Columns.Add(timeCol);
                            timeCol.IsReadOnly      = field.IsReadonly;
                            timeCol.EditColumnIndex = field.ColIndex;
                            break;

                        case DucTypes.Image:
                            GridViewBinaryImageColumn ic = new GridViewBinaryImageColumn(headerText, field.FieldKey);
                            ucListManager.Columns.Add(ic);
                            ic.IsReadOnly      = field.IsReadonly;
                            ic.EditColumnIndex = field.ColIndex;
                            ic.ImageWidth      = 60;
                            ic.ImageHeight     = 80;
                            break;

                        case DucTypes.Attachment:
                            GridViewAttachmentColumn ac = new GridViewAttachmentColumn(headerText, field.FieldKey);
                            ucListManager.Columns.Add(ac);
                            ac.IsReadOnly              = field.IsReadonly;
                            ac.EditColumnIndex         = field.ColIndex;
                            ac.NavigateUrlFormatString = ServerPath + field.NavigateUrlFormatString;
                            ac.NavigateUrlField        = BaseDto.FLD_StringId;
                            ac.LinkTextField           = BA.Core.UIConst.FLD_LinkText;
                            break;

                        default:
                            GridViewDataColumn c = new GridViewDataColumn(headerText, field.FieldKey);
                            ucListManager.Columns.Add(c);
                            c.IsReadOnly      = field.IsReadonly;
                            c.EditColumnIndex = field.ColIndex;
                            if (field.MaxLength.HasValue)
                            {
                                c.MaxLength = field.MaxLength.Value;
                            }
                            break;
                        }
                    }
                }
            }

            if (AllowEdit)
            {
                GridViewEditCommandColumn editColumn = new GridViewEditCommandColumn();
                ucListManager.Columns.Add(editColumn);
                editColumn.UniqueName    = "edt0001";
                editColumn.NonExportable = true;
            }
            if (AllowDelete)
            {
                GridViewDeleteButtonColumn deleteColumn = new GridViewDeleteButtonColumn();
                ucListManager.Columns.Add(deleteColumn);
                deleteColumn.UniqueName              = "del0001";
                deleteColumn.NonExportable           = true;
                deleteColumn.ConfirmTextFormatString = "Are you sure to delete {0}";
                deleteColumn.ConfirmTextFields       = new string[] { BaseDto.FLD_Display };
            }
        }