public static Object[] Retrieve(String procedureName, SqlConnection sqlConnection, Type objectType) { // Convenções: // A procedure deve retornar registros compatíveis com objectType // objectType deve possuir campos com os atributos [ItemId] e [ItemName] // Estes campos devem ser publicos e de instancia (não estáticos) ProcedureCall procedureCall = new ProcedureCall(procedureName, sqlConnection); procedureCall.parameters.Add(new ProcedureParam("@tenantId", SqlDbType.Int, 4, 4)); procedureCall.Execute(true); List <Object> returnList = procedureCall.ExtractFromResultset(objectType); ItemScaffolding itemScaffolding = new ItemScaffolding(); itemScaffolding.FindItemFields(objectType); Object[] itemArray = new Object[returnList.Count + 1]; itemArray[0] = Activator.CreateInstance(objectType); itemScaffolding.SetItemId(itemArray[0], 0); itemScaffolding.SetItemName(itemArray[0], ""); int ndx = 1; foreach (Object obj in returnList) { itemArray[ndx] = Activator.CreateInstance(objectType); itemScaffolding.SetItemId(itemArray[ndx], itemScaffolding.GetItemId(obj)); itemScaffolding.SetItemName(itemArray[ndx], itemScaffolding.GetItemName(obj)); ndx++; } return(itemArray); }
private static ListItem[] GetItems(String procedureName, SqlConnection sqlConnection, Type objectType, Boolean strict) { ProcedureCall procedureCall = new ProcedureCall(procedureName, sqlConnection); Object tenant = HttpContext.Current.Session["tenant"]; NameValueCollection tenantInfo = HttpUtility.ParseQueryString(tenant.ToString()); int tenantId = 0; int.TryParse(tenantInfo["id"], out tenantId); procedureCall.parameters.Add(new ProcedureParam("@tenantId", SqlDbType.Int, 4, tenantId)); procedureCall.Execute(true); List <Object> returnList = procedureCall.ExtractFromResultset(objectType); ItemScaffolding itemScaffolding = new ItemScaffolding(); itemScaffolding.FindItemFields(objectType); ListItem[] itemArray; int ndx; if (strict) { itemArray = new ListItem[returnList.Count]; ndx = 0; } else { itemArray = new ListItem[returnList.Count + 1]; itemArray[0] = new ListItem(); itemArray[0].Value = "0"; itemArray[0].Text = ""; ndx = 1; } foreach (Object obj in returnList) { itemArray[ndx] = new ListItem(); itemArray[ndx].Value = itemScaffolding.GetItemId(obj).ToString(); itemArray[ndx].Text = itemScaffolding.GetItemName(obj); ndx++; } return(itemArray); }