Exemplo n.º 1
0
        private WbapList CreatePageList(DataListBindSchema listSchema)
        {
            WbapList webList = new WbapList();

            webList.Id      = listSchema.Id;
            webList.DataRow = listSchema.DataRow;

            for (int j = 0; j < listSchema.Columns.Count; j++)
            {
                FieldBindSchema fieldSchema = listSchema.Columns[j];
                webList.Columns.Add(fieldSchema.Id);
            }

            DataTable table = this.DataSet.Tables[listSchema.TableId];

            if (table == null)
            {
                throw new E_WbdlDataSourceNotFindTable(listSchema.TableId);
            }

            DataColumn[] keys = table.PrimaryKey;

            foreach (DataColumn key in keys)
            {
                string colName = key.ColumnName + WbdlConst._Key.ToString();
                if (!webList.Columns.Contains(colName))
                {
                    webList.Columns.Add(colName);
                }
            }

            return(webList);
        }
Exemplo n.º 2
0
        internal WbapList GetWbapList(string elementId)
        {
            WbapList     list         = GetNullWbapList(elementId);
            PageDataList pageDataList = Page.PageLists[elementId];

            FillWbapList(list, pageDataList.DataTable.Select());
            return(list);
        }
Exemplo n.º 3
0
        internal void BuildRequestDataBodyWithTable(WbapDataBody wbapElementBinds, string tableName, DataRow[] dataRows)
        {
            PageDataForm form = Page.PageForms.FindForm(tableName);

            //if (form == null) InitFieldBinds();
            //form = Page.PageForms.FindForm(fieldName);
            if (form != null)
            {
                BuildRequestDataBodyWithForm(wbapElementBinds, form, dataRows);
            }
            PageDataList list = Page.PageLists.FindListByTableName(tableName);

            if (list != null)
            {
                WbapList wbapList = CreatePageList(list.ListSchema);
                if (dataRows != null)
                {
                    FillWbapList(wbapList, dataRows);
                }
                wbapElementBinds.Add(wbapList.Id + WbapList.TypeMarker, wbapList);
            }
        }
Exemplo n.º 4
0
        internal void SetWbapList(string elementId, WbapList wbapList)
        {
            string typeMarker = WbapDataType._List.ToString();

            if (elementId.EndsWith(typeMarker))
            {
                elementId = elementId.Substring(0, elementId.Length - typeMarker.Length);
            }

            if (!Page.PageLists.ContainsKey(elementId))
            {
                DataListBindSchema listSchema = this.Schame.DataListBinds.FindItem(elementId);
                if (listSchema == null)
                {
                    throw new E_WbdlListSchemaNotDefine(elementId);
                }
                InitDataList(listSchema);
            }

            if (!Page.PageLists.ContainsKey(elementId))
            {
                throw new E_WbdlPageNotHaveListElement(elementId);
            }

            PageDataList pageList = Page.PageLists[elementId];

            if (pageList == null)
            {
                throw new E_WbdlPageNotHaveListElement(elementId);
            }


            DataColumn[]             keyCols   = pageList.DataTable.PrimaryKey;
            Dictionary <string, int> keyIndexs = new Dictionary <string, int>();

            for (int i = 0; i < keyCols.Length; i++)
            {
                string keyName  = keyCols[i].ColumnName + WbdlConst._Key.ToString();
                int    keyIndex = wbapList.Columns.IndexOf(keyName);
                if (keyIndex < 0)
                {
                    throw new E_WbdlWbapListNoKeyColumn(keyName);
                }
                keyIndexs.Add(keyCols[i].ColumnName, keyIndex);
            }

            for (int i = 0; i < wbapList.Data.Count; i++)
            {
                List <string> row    = wbapList.Data[i];
                string        filter = "";

                bool isNewRow = false;
                foreach (KeyValuePair <string, int> keyIndex in keyIndexs)
                {
                    if (string.IsNullOrEmpty(row[keyIndex.Value]))
                    {
                        isNewRow = true;
                        break;
                    }
                    filter += keyIndex.Key + "='" + row[keyIndex.Value] + "' and ";
                }

                DataRow dataRow = null;
                if (!isNewRow)
                {
                    if (filter.EndsWith(" and "))
                    {
                        filter = filter.Substring(0, filter.Length - " and ".Length);
                    }

                    if (string.IsNullOrEmpty(filter))
                    {
                        throw new E_WbdlPageControllerException("key err can not select record ");
                    }

                    DataRow[] dataRows = pageList.DataTable.Select(filter);
                    if (dataRows.Length > 0)
                    {
                        dataRow = dataRows[0];
                    }
                }

                if (dataRow == null)
                {
                    isNewRow = true;
                }

                if (isNewRow)
                {
                    isNewRow = true;
                    dataRow  = pageList.DataTable.NewRow();
                }

                if (!isNewRow)
                {
                    dataRow.BeginEdit();
                }
                foreach (PageDataField col in pageList.Fields)
                {
                    int wbapColIndex = wbapList.Columns.IndexOf(col.ElementId);
                    if (wbapColIndex > -1)
                    {
                        dataRow[col.FieldId] = row[wbapColIndex];
                    }
                }
                if (!isNewRow)
                {
                    dataRow.EndEdit();
                }
                if (isNewRow)
                {
                    pageList.DataTable.Rows.Add(dataRow);
                }
            }
        }
Exemplo n.º 5
0
        private void FillWbapList(WbapList list, DataRow[] dataRows)
        {
            DataListBindSchema listSchema = Schame.DataListBinds.FindItem(list.Id);

            if (listSchema == null)
            {
                return;
            }

            if (dataRows == null)
            {
                string tableName = GetListTableId(listSchema);
                if (String.IsNullOrEmpty(tableName))
                {
                    return;
                }
                if (this.DataSet == null)
                {
                    return;
                }
                DataTable table = this.DataSet.Tables[listSchema.TableId];
                if (table == null)
                {
                    throw new E_WbdlDataSourceNotFindTable(listSchema.TableId);
                }
                dataRows = table.Select();
            }

            list.Data.Clear();

            if (dataRows.Length == 1 && (dataRows[0].RowState == DataRowState.Added || dataRows[0].RowState == DataRowState.Detached))
            {
                list.IsAdd = true;
            }

            foreach (DataRow dataRow in dataRows)
            {
                List <string> listRow = new List <string>();
                list.Data.Add(listRow);
                foreach (string colName in list.Columns)
                {
                    string fieldName = null;

                    if (colName.EndsWith(WbdlConst._Key.ToString()))
                    {
                        fieldName = colName.Substring(0, colName.Length - WbdlConst._Key.ToString().Length);
                    }
                    else
                    {
                        fieldName = listSchema.Columns.GetItem(colName).FieldId;
                    }

                    if (String.IsNullOrEmpty(fieldName))
                    {
                        listRow.Add("");
                    }
                    else
                    {
                        listRow.Add(dataRow[fieldName].ToString());
                    }
                }
            }
        }