[C#.NET][Infopath 2007] 如何在 Form Service 使用全域變數 / How to Use Global Variable in Form Service

[C#.NET][Infopath 2007] 如何在 Form Service 使用全域變數 / How to Use Global Variable in Form Service

Form Service模式下不支援全域變數,必須要使用FormState來存取欄位變數

在上篇[InfoPath] 如何使用程式加入列至重複表格 / How to Add Row to a Repeat Table,我宣告了以下這幾隻變數,

2009-12-5 下午 04-55-32_thumb[3]

不過當我要發佈到Web前,做了設計檢查,發現上面那些變數必須要使用FormState來存取,Form Service不支援直接存取全域變數,必須要使用欄位。

2009-12-5 下午 04-54-22_thumb[9]

 


以下列出了幾個使用FormState範例

//字串,預設沒有回傳值(null)
private string f1
{
    get { return (string)FormState["f1"]; }
    set { FormState["f1"] = value; }
}

 

 


//整數,預設沒有回傳值(null)
private int counter
{
    get { return (int)FormState["counter"]; }
    set { FormState["counter"] = value; }
}

 

 


//布林,預設回傳false
private bool IsFalse
{
    get
    {
        if (FormState["IsFalse"] != null)
        {
            return (bool)FormState["IsFalse"];
        }
        else
        {
            return false;
        }
    }
    set
    {
        FormState["IsFalse"] = value;
    }
}

 

 


//整數,預設回傳0
private int count
{
    get
    {
        if (FormState["_count"] != null)
        {
            return (int)FormState["_count"];
        }
        else
        {
            return 0;
        }
    }
    set
    {
        FormState["_count"] = value;
    }
} 

改變寫法後再檢查看看程式碼是否被Form Service支援,果然可以了

2009-12-5 下午 10-30-56_thumb[1] 

 

 

再發佈到Sharepoint看看,果然也是可以執行的啦~讚!!!

2009-12-5 下午 10-40-40_thumb[3]

範例下載

AddRowToRepeatTable+.rar

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo