投稿者: chi
カスタムコントロール
○配列型のプロパティ
・プロパティエディタの指定
・文字列型コレクションエディタの作成
・サーバー コントロールのプロパティの例
・Web コントロールのコレクション プロパティの例
→Contacts コントロール
・コレクション エディタの例
→ContactCollectionEditor
ASP.Net
○[ASP.NET AJAX]クライアントサイド・スクリプトからXML Webサービスを非同期呼び出しするには?
・郵便番号を入力すると、リアルタイムで住所がテキストボックスに表示される
・ブリッジ機能
○[ASP.NET AJAX]Webサービス・ブリッジ機能により構造化データを受け渡しするには?(基本編)
○第2回 PageRequestManagerクラスでUpdatePanelコントロールを極める!
・UpdatePanel
・2重クリック防止
・非同期ポストバックの完了時に一定時間背景色を変える。エラーを取得する。
○ASP.NET Site.Masterに設定するJavaScriptファイルのパスについて
・<script src=”<%= ResolveUrl(“~/Scripts/jquery.min.js”) %>” type=”text/javascript”></script>
・<script src=”/Scripts/jquery.min.js” type=”text/javascript”></script> ・・・可?
○【ASP.NET】Validatorを用いての検証結果をjavascriptのalertで出力するには?
ASP.Net JavaScript
○2重クリック防止 - ボタンを非活性化
<input type="submit" name="btn_Regist" value="保存" onclick="DisableButton(this);" id="btn_Regist"/>
function DisableButton(b) {
b.style.display = 'none';
var ele = b.cloneNode(true);
ele.id = '';
ele.disabled = true;
ele.style.display = '';
b.parentNode.insertBefore(ele, b);
}
○2重クリック防止 - 画面フリーズ
<style type="text/css">
.loading
{
position:fixed;
top:50%;
left:50%;
color:Red;
z-index:100;
}
.lockOff
{
display: none;
visibility: hidden;
}
.lockOn
{
display: block;
visibility: visible;
position: absolute;
z-index: 800;
top: 0px;
left: 0px;
width: 105%;
height: 205%;
background-color: #ffffff;
text-align: center;
padding-top: 20%;
opacity: 0.25;
}
</style>
<div id="LockPane" class="lockOff"></div>
<asp:Label ID="Status" runat="server" Text="" CssClass="loading"></asp:Label>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
function ShowWait(exported) {
$(".lockOff").addClass("lockOn")
var h = $(".lockOn").height();
$(".lockOn").height(document.body.clientHeight);
$get('Status').innerHTML = "<img src='/images/loader.gif' >";
if (exported) {
intervalId = setInterval(function () {
if ($.cookie('exported')) {
HideWait();
// ポーリングを停止
clearInterval(intervalId);
// フラグをクリア
$.removeCookie('exported', { path: '/' });
}
}, 1000);
}
}
function HideWait() {
$(".lockOff").removeClass("lockOn");
$get('Status').innerHTML = "";
}
function confirmAndWait(txt, exported) {
if (confirm(txt)) {
ShowWait(exported);
return true;
}
return false;
}
・HTML
<input type="submit" name="btn" value="次へ" onclick="ShowWait();" id="btn"/>
<input type="submit" name="btn" value="ダウンロード" onclick="ShowWait(true);" id="btn"/>
(ASP.Net)
Response.BinaryWrite(System.IO.File.ReadAllBytes(file));
HttpCookie cookie = new HttpCookie("exported");
cookie.Value = "ok";
cookie.Expires = DateTime.Now.AddMinutes(1);
Response.Cookies.Add(cookie);
Response.End();
<input type="submit" name="btn" value="確認" onclick="confirmAndWait('よろしいですか?');" id="btn"/>
○JavaScript
<!--<script type="text/javascript" src="/Scripts/jquery-1.7.1.min.js"></script>-->
<!--<script type="text/javascript" src="/Scripts/jquery-1.4.1.cookie.min.js"></script>-->
<!--<script type="text/javascript" src="<%= ResolveUrl("~/Scripts/1.7.1jquery.min.js") %>"></script>-->
<!--<script type="text/javascript" src="<%= ResolveUrl("~/Scripts/1.4.1jquery.cookie.min.js") %>"></script>-->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
ASP.net DataTable Relationでマスタ比較
public void CompMst(DataTable pfrom, DataTable pto, List RelationCols, List NonCmopCols)
{
try
{
putLog(MethodBase.GetCurrentMethod(),"From=" + pfrom.TableName + " To=" + pto.TableName);
for (int i = 0; i < NonCmopCols.Count; i++)
{
NonCmopCols[i] = NonCmopCols[i].ToUpper();
}
if (pfrom.GetType().Equals(pto.GetType()) == false)
{
putLog("型が不一致 From=" + pfrom.GetType().ToString() + " To=" + pto.GetType().ToString(), logType.Warn);
return;
}
if (pfrom.Columns.Count != pto.Columns.Count)
{
putLog("列数が不一致 From=" + pfrom.Columns.Count.ToString() + " To=" + pto.Columns.Count.ToString(), logType.Warn);
return;
}
DataSet ds = new DataSet(); //from join to
DataTable _from = pfrom.Copy();
_from.TableName = "from";
ds.Tables.Add(_from);
DataTable _to = pto.Copy();
_to.TableName = "to";
ds.Tables.Add(_to);
DataSet ds1 = new DataSet(); // to join from
ds1.Tables.Add(_to.Copy());
ds1.Tables.Add(_from.Copy());
DataColumn[] colDs_0 = new DataColumn[RelationCols.Count];
DataColumn[] colDs_1 = new DataColumn[RelationCols.Count];
DataColumn[] colDs1_0 = new DataColumn[RelationCols.Count];
DataColumn[] colDs1_1 = new DataColumn[RelationCols.Count];
for (int i = 0; i 0) //fromとtoの共通の行
{
foreach (DataRow r1 in rows)
{
// 項目の値を比較
string str = string.Empty;
bool mod = utility.Comp(r1, ref str, r0, NonCmopCols);
if (mod == true)
{
putLog("変更行 " + str);
}
}
}
else //fromにあってtoに無い。削除行
{
string str = string.Empty;
bool mod = utility.Comp(r0, ref str);
putLog("削除行 " + str);
}
}
foreach (DataRow r0 in ds1.Tables[0].Rows)
{
if (r0.GetChildRows(ds1.Relations[0]).Length == 0) //toにあってfromに無い。追加行
{
string str = string.Empty;
bool mod = utility.Comp(r0, ref str);
putLog("追加行 " + str);
}
}
}
catch (Exception ex)
{
_putLog(ex);
}
}
public static bool Comp(DataRow r, ref string str, DataRow r1 = null, List NonCmopCols = null)
{
StringBuilder sb = new StringBuilder();
bool mod = false;
for (int c = 0; c < r.Table.Columns.Count; c++)
{
sb.Append(r.Table.Columns[c].ColumnName + "=" + r[c].ToString());
if (r1 != null)
{
if (NonCmopCols != null && NonCmopCols.IndexOf(r.Table.Columns[c].ColumnName.ToUpper()) < 0)
{
if (r[c].Equals(r1[c]) == false)
{
mod = true;
sb.Append("<<" + r1[c].ToString() + ">>");
}
}
}
sb.Append("__ ");
}
str = sb.ToString();
return mod;
}
RemortApp
○RemoteApp の動作について
・「RDPShell」が起動している
'''
''' RemoteAppで起動しているか判定
'''
'''
'''
Public Function IsRemoteApp() As Boolean
Try
Using mos As New System.Management.ManagementObjectSearcher( _
String.Format( _
"SELECT * FROM Win32_Process WHERE Name LIKE 'RDPSHELL.EXE'"))
Using moc As System.Management.ManagementObjectCollection = mos.[Get]()
For Each mo As System.Management.ManagementObject In moc
Using mo
'プロセスIDを取得する
Dim processId As Integer = Convert.ToInt32(mo("ProcessId"))
Dim name As String = mo("Name").ToString()
Try
Dim methodName(1) As String
mo.InvokeMethod("GetOwner", methodName)
Dim user As String = methodName(0)
Dim domain As String = methodName(1)
If user = Nothing Then user = ""
If user.ToUpper() = System.Environment.UserName.ToUpper() Then
Return True
End If
Catch ex As Exception
End Try
End Using
Next
End Using
End Using
Catch ex As Exception
End Try
Return False
End Function
'''
''' RemoteAppで起動しているか判定
'''
'''
'''
Public Function IsRemoteApp() As Boolean
Try
Dim mc As New System.Management.ManagementClass("Win32_Process")
Dim moc As System.Management.ManagementObjectCollection = mc.GetInstances()
Dim mo As System.Management.ManagementObject
For Each mo In moc
Dim id As String = mo("ProcessId").ToString()
Dim name As String = mo("Name").ToString()
Try
If name.ToUpper() = "RDPSHELL.EXE" Then
Dim methodName(1) As String
mo.InvokeMethod("GetOwner", methodName)
Dim user As String = methodName(0)
Dim domain As String = methodName(1)
If user = Nothing Then user = ""
If user.ToUpper() = System.Environment.UserName.ToUpper() Then
Return True
End If
End If
Catch ex As Exception
End Try
Next mo
Catch ex As Exception
End Try
Return False
End Function
トランザクション
○テーブルアダプタと TransactionScope の組み合わせ
・TransactionManager.DistributedTransactionStarted += new TransactionStartedEventHandler(TransactionManager_DistributedTransactionStarted);
php
○PHPまとめ – ヘッダー
・生のHTTPヘッダーを送信する
・ステータスコードを指定
・別のページに飛ばす
○PDF(等)のファイルをブラウザで開かせずにダウンロード形式にさせる。
○PHPでJSONを出力して、JavaScriptで取得する方法
○エラーが表示されない時、ソースの先頭に以下を追加
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ユーザープロファイル 再構築
弥生
○他のPCのSqlServerのデータをバックアップしようとすると、「エラー 67 ネットワーク名が見つかりません」
・弥生会計のバックアップ時エラー
共有フォルダ―「C:\ProgramData\Yayoi\Backup」
共有名「YAccBackup$」
・「\\<PC名>\YAccBackup$」でアクセスした時、ID/PWを聞かれないようにしておく
参考:Windows 7 Home Premium で、パスワード無しの共有フォルダ