示例#1
0
        private WebDataSource GetMasterDataSource(WebDataSource owner)
        {
            if (string.IsNullOrEmpty(owner.MasterDataSource))//当前就是Master
            {
                return owner;
            }
            else
            {
                if (owner.MasterDataSource == owner.ID)
                {
                    //MasterDataSource不能是自己本身,会造成死循环
                    throw new EEPException(EEPException.ExceptionType.PropertyInvalid, owner.GetType(), owner.ID,  "MasterDataSource", owner.MasterDataSource);
                }
                Control parent = owner.Parent.FindControl(owner.MasterDataSource);

                if (parent == null)
                {
                    //在Page上找不到MasterDataSrouce
                    throw new EEPException(EEPException.ExceptionType.ControlNotFound, owner.GetType(), owner.ID, "WebDataSource", owner.MasterDataSource);
                }
                else if (parent is WebDataSource)
                {
                    return GetMasterDataSource(parent as WebDataSource);//递归直到最顶层
                }
                else
                {
                    throw new EEPException(EEPException.ExceptionType.ControlTypeNotMatch,owner.GetType(), owner.ID, "WebDataSource", owner.MasterDataSource);
                }
            }
        }
示例#2
0
        private void doOkForGridInsert(WebGridView gridView, WebDataSource ds)
        {
            Hashtable ht = new Hashtable();
            for (int i = 0; i < gridView.Columns.Count; i++)
            {
                string fieldName;
                if (gridView.Columns[i] is BoundField)
                {
                    fieldName = ((BoundField)gridView.Columns[i]).DataField;
                    if (!((BoundField)gridView.Columns[i]).ReadOnly)
                    {
                        TextBox txt = (TextBox)gridView.FooterRow.FindControl("InfoTextBox" + fieldName);
                        if (txt != null)
                        {
                            if (txt.Text == "")
                            {
                                ht.Add(fieldName, DBNull.Value);
                            }
                            else
                            {
                                ht.Add(fieldName, txt.Text);
                            }
                        }
                    }
                    else
                    {
                        Label lbl = (Label)gridView.FooterRow.FindControl("InfoLabel" + fieldName);
                        if (lbl != null)
                        {
                            if (lbl.Text == "")
                            {
                                ht.Add(fieldName, DBNull.Value);
                            }
                            else
                            {
                                ht.Add(fieldName, lbl.Text);
                            }
                        }
                    }
                }
                else if (gridView.Columns[i] is TemplateField)
                {
                    fieldName = gridView.Columns[i].SortExpression;
                    object strValue = GetValue(fieldName, gridView);
                    if (strValue == null || strValue.ToString() == "")
                    //modified by lily 2007/4/12 如果多个Templatefield,且没有设定SortExpression,会报错。
                    {
                        if (fieldName != null && fieldName != "")
                            ht.Add(fieldName, DBNull.Value);
                    }
                    else
                        ht.Add(fieldName, strValue);
                }
            }
            WebValidate validate = (WebValidate)gridView.ExtendedFindChildControl(gridView.DataSourceID, FindControlType.DataSourceID, typeof(WebValidate));
            if (validate != null)
            {
                validate.Text = string.Empty;
                if (ds.PrimaryKey.Length > 0)
                {
                    object[] value = new object[ds.PrimaryKey.Length];
                    for (int i = 0; i < ds.PrimaryKey.Length; i++)
                    {
                        string columnName = ds.PrimaryKey[i].ColumnName;
                        if (ht.ContainsKey(columnName))
                        {
                            value[i] = ht[columnName];
                        }
                        else if (ds.RelationValues != null && ds.RelationValues.Contains(columnName))
                        {
                            value[i] = ds.RelationValues[columnName];
                        }
                        else
                        {
                            throw new EEPException(EEPException.ExceptionType.ColumnValueNotFound, ds.GetType(), ds.ID, columnName, null);
                        }

                    }
                    if (!validate.CheckDuplicate(ds, value))
                    {
                        gridView.ValidateFailed = true;
                        return;
                    }
                }
                bool validateSucess = validate.CheckValidate(ht);
                if (validateSucess)
                {
                    gridView.ValidateFailed = false;
                    ds.Insert(ht);
                    gridView.GridInserting = false;
                    gridView.OnAfterInsert(EventArgs.Empty);
                    if (!gridView.TotalActive)
                        gridView.ShowFooter = false;
                    else
                        gridView.DataBind();
                }
                else
                {
                    gridView.ValidateFailed = true;
                    gridView.ValidateFormat();
                }

                if (gridView.ValidateFailed)
                    return;
            }
            else
            {
                ds.Insert(ht);
                gridView.GridInserting = false;
                gridView.OnAfterInsert(EventArgs.Empty);
                if (!gridView.TotalActive)
                    gridView.ShowFooter = false;
                else
                    gridView.DataBind();
            }
            WebNavigator bindingNav = gridView.GetBindingNavigator();
            if (bindingNav != null && bindingNav != this)
            {
                if (ds.AutoApply)
                {
                    bindingNav.SetState(WebNavigator.NavigatorState.ApplySucess);
                    bindingNav.SetNavState("Browsed");
                }
                else
                {
                    bindingNav.SetState(WebNavigator.NavigatorState.Changed);
                    bindingNav.SetNavState("Changing");
                }
            }
            if (ds.AutoApply)
            {
                this.SetState(WebNavigator.NavigatorState.ApplySucess);
                this.SetNavState("Browsed");
            }
            else
            {
                this.SetState(WebNavigator.NavigatorState.Changed);
                this.SetNavState("Changing");
            }
        }