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);
        }
Example #2
0
        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);
        }