スポンサーリンク
スポンサーリンク

Visual Studio Tools for Applications プログラミング ドロップダウンボックスのチェンジイベントを処理

C#

Infopathのビューに、「プロジェクトNo」「プロジェクト名」ドロップダウンボックスを追加し、「プロジェクトNo」のチェンジイベントで、「プロジェクト名」ボックスの値を動的に変更するには、以下プログラムを記述する。

※ドロップダウンボックスに紐付くデータは、SQLServerにあることが前提のコード。
※IntoPath2003互換

 

// 次の関数ハンドラが Microsoft Office InfoPath によって自動的に作成されます。
// 引数の数または種類を変更しないでください。
[InfoPathEventHandler(MatchPath = "/my:travelRequest/my:dプロジェクトNo", EventType = InfoPathEventType.OnAfterChange)]
public void dプロジェクトNo_OnAfterChange(DataDOMEvent e)
{
    // ここにコードを書き込んで、グローバル状態に戻してください。

    if (e.IsUndoRedo)
    {
        // 元に戻すまたはやり直しの操作が発生しましたが、DOM は読み取り専用です。
        return;
    }

    // フィールドが変更されました。DOM は書き込み可能です。
    // ここにコードを書き込んでください。

    string strPJTNo = thisXDocument.DOM.selectSingleNode("/my:travelRequest/my:dプロジェクトNo").text;

    string myConnString = "Provider=SQLOLEDB;Data Source=DINO_DP;Initial Catalog=PurchaseRequest;Persist Security Info=True;User ID=ユーザー名;Password=パスワード";
    string mySQL = "SELECT DescriptionOfProject FROM TBL_ProjectMst WHERE ProjectNo = ‘" + strPJTNo + "’";

    OleDbConnection myConn = new OleDbConnection(myConnString);
    OleDbCommand myCommand = new OleDbCommand(mySQL, myConn);
    myCommand.Connection.Open();
    OleDbDataReader myReader = myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    while (myReader.Read())
    {
        thisXDocument.DOM.selectSingleNode("/my:travelRequest/my:dプロジェクト名").text = myReader.GetString(0);
    }
    myReader.Close();
    myConn.Close();

}

コメント

タイトルとURLをコピーしました