iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0
自我挑戰組

ArasPLM開發分享系列 第 18

[Day18]MVC Dictionary的使用

  • 分享至 

  • xImage
  •  

今天要介紹的是在MVC中使用Dictionary,字典這個概念在很多語言中都會有類似的語法,字典中分為Key與Value者兩種,簡單的來說就是鑰匙與保險箱的配對關係,這邊介紹的是在我開發Excel匯入工具時將Excel的內容匯入至Aras中,Aras屬性欄位對應到Excel中第幾個欄位之間的關係

  1. Aras屬性欄位值與Excel相對應的Column

Class

  1. 首先先在Class中建立一個Dictionary,將Aras的欄位值與Excel中的Column加入進來進行比對,最後寫入字典當中
//建立字典
public Dictionary<string, string> MyDic = new Dictionary<string, string>();

//比對Aras的欄位相對應是Excel的第幾個column
public void CreateDictionary(List<string> Aras_property_list, List<string>  key_column)
{
    for (int i = 0; i < Aras_property_list.Count(); i++)
    {
        for (int j = 0; j < key_column.Count(); j++)
        {
            //比對Aras的屬性欄位與相對應Excel的column寫入字典中
            if (Aras_property_list[i] == key_column[j])
            {
                MyDic.Add(Aras_property_list[i], "" + j);
            }
        }
    }
}

Controller

  1. 在Controller中利用foreach將字典中的Key與Value中查尋出來,再利用判斷式判別將Key與相對應的Value寫入Aras當中,這樣就算欄位順序調換也能將Excel的資料正確的匯入到Aras相對應的屬性欄位
//定義foreach迴圈次數
int counts = 0;

// 查巡整個字典
foreach (var OneItem in lib.MyDic)
{
    key = OneItem.Key;
    value = OneItem.Value;

    //判斷欄位型態是否為item,若是則反查Item類的id
    if (Aras_type_list[counts] == "item")
    {
        for (int count = 0; count < Aras_type_property_list.Count(); count++)
        {
            if (key == Aras_type_property_list[count])
            {
                Item item = inn.newItem(Aras_related_key_type_list[count], "get");
                item.setAttribute("select", "id");
                item.setAttribute("where", "[" + Aras_related_key_type_list[count]  + "]." +     
                Aras_related_key_list[count] + "= '" + Excel_value_row[int.Parse(value)]  + "'");
                item = item.apply();

                item_id = item.getProperty("id", "");
                item_type_add.setProperty(key, item_id);
            }
            else if (key != Aras_type_property_list[count] &&  Aras_type_list[counts] != "item")
            {
                item_type_add.setProperty(key, Excel_value_row[int.Parse(value)]);
            }
        }
    }
    else
    {
        item_type_add.setProperty(key, Excel_value_row[int.Parse(value)]);
    }
    counts++;
}

上一篇
[Day17]MVC Tuple的使用
下一篇
[Day19]MVC的前端網頁框架被Site.css限制
系列文
ArasPLM開發分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言