ドリンクバーゲン会場

ASP.NETで特定のPCのみDataGridの項目を表示させる2012年04月25日 10時37分21秒

ASP.NETで作成されているホームページで、
DataGridの内容を使っている人で変えるようにと言われ、
設定を追加しました。

具体的には、管理者にのみ表示させたい項目がありるので、
管理者以外の人の表示を制限するというものです。

管理者の方は各自PCを持っているので、
今回は、PC名を取得し登録されているPC名であればDataGridの
項目を表示するようにしています。

PC名の登録はMXLファイルで登録しました。

kanri.xml
*******************************
<?xml version="1.0" encoding="utf-8" ?>
<host>
<hostname name="KANRI-PC">KANRI-PC</hostname>
</host>
*******************************

ソースがこちらです。
*******************************
Dim xmlDoc As XmlDocument
Dim xmlElement As XmlElement
Dim msgElement As XmlElement
Dim xmlFilePath As String
Dim pcStr As String
Dim pcStr2 As String

'XMLファイル読み込み
xmlFilePath = "kanri.xml"
xmlDoc = New XmlDocument()
xmlDoc.Load(xmlFilePath)

'DataGrid非表示
DataGrid1.Columns(8).Visible = False

'IPアドレス取得
Dim ip_addr = Request.ServerVariables("REMOTE_ADDR")
'localhostの場合は処理を抜ける
If ip_addr <> "::1" Then
'IPアドレスからPC名を取得
Dim host_name = System.Net.Dns.GetHostByAddress(ip_addr).HostName.ToUpper()
xmlElement = xmlDoc.DocumentElement
For Each msgElement In xmlElement.ChildNodes
pcStr = msgElement.GetAttribute("name")
pcStr2 = pcStr + ".ドメイン名"
'XMLファイルに登録されていれば、DataGridを表示
If pcStr = host_name Or pcStr2 = host_name Then
DataGrid1.Columns(8).Visible = True
Exit For
End If
Next
End If
*******************************

まず、XMLファイルを読み込んでいます。

DataGridの項目をいったん非表示にしています。

IPアドレスを取得し、IPアドレスからPC名を取得します。
その際、ToUpperで大文字に変換しています。
これは、XMLファイルで登録しているPC名が大文字なので、
そちらに合わせています。

XMLファイルとのチェックでは取得したPC名のみの場合と、
ドメイン名が付加された場合の2種類でチェックをしています。
ここでは、ドメインで管理をしているのですが、
Windows7ではPC名のみなのですが、
WindowsXPでは、ドメイン名付のフルコンピューター名で取得するために
このようにしています。

XMLファイルに登録されているPC名と合致する場合はDataGridを表示します。
今回は9番目の列を切り替えているので、Columns(8)となっています。

パソコンを共有している場合には使えませんが、
PC単位であれば、これで内容を変えることができると思います。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://n-box.asablo.jp/blog/2012/04/25/6424989/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。