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); }
public PageDataList(DataListBindSchema listSchema) { this.listSchema = listSchema; if (listSchema.Columns.Count > 0) { tableId = listSchema.Columns[0].TableId; } }
public string GetListTableId(DataListBindSchema listSchema) { foreach (FieldBindSchema field in listSchema.Columns) { if (!String.IsNullOrEmpty(field.TableId)) { return(field.TableId); } } return(null); }
private void InitDataLists() { Page.PageLists.Clear(); for (int i = 0; i < Schame.DataListBinds.Count; i++) { DataListBindSchema listSchema = Schame.DataListBinds[i]; InitDataList(listSchema); //CreatePageList(listSchema); //FillWbapList(pageList); } }
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 WbapList GetNullWbapList(string elementId) { DataListBindSchema listSchema = Schame.DataListBinds.GetItem(elementId); return(CreatePageList(listSchema)); }
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); } } }
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()); } } } }