internal WbapList GetWbapList(string elementId) { WbapList list = GetNullWbapList(elementId); PageDataList pageDataList = Page.PageLists[elementId]; FillWbapList(list, pageDataList.DataTable.Select()); return(list); }
private PageDataList InitDataList(DataListBindSchema listSchema) { PageDataList pageList = new PageDataList(listSchema); Page.PageLists.Add(listSchema.Id, pageList); string tableName = ""; foreach (FieldBindSchema fieldSchema in listSchema.Columns) { if (string.IsNullOrEmpty(tableName)) { tableName = fieldSchema.TableId; DataTable dataTable = DataSet.Tables[tableName]; pageList.DataTable = dataTable; } PageDataField listField = new PageDataField(fieldSchema); listField.DataColumn = pageList.DataTable.Columns[fieldSchema.FieldId]; pageList.Fields.Add(listField); } return(pageList); }
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); } }
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); } } }