第 1 レベルの評価項目に評価サブ項目が含まれている場合、その評価項目をクリックすると、新しいウィンドウが開き、ユーザーが操作できる現在の評価項目のすべての評価サブ項目のリストが表示されます。ユーザーの操作が完了したら、「OK」ボタンをクリックして親フォームに戻り、子フォームのすべての操作結果が同時に親フォームに反映されます。同時に、サブフォームがポップアップしている間にユーザーが評価項目を再度クリックすると、最後の操作の結果が対応する操作項目にバインドされる必要があります。
上で説明した例には、親フォームと子フォーム間のデータ転送が含まれます。もちろん、このデータ転送を実装するにはさまざまな方法があります。ここでは、この例で使用したメソッドを記録します。私の方法は、サブフォームが「OK」ボタンをクリックしたときに操作結果をjson形式の文字列に構築し、親フォームのメソッドopener.method()を呼び出してjson形式のデータを親フォームに転送するというものです。
この例で構築された json データは、次の形式に似ています:
{"MyData":[
{"bh":"111","lx" :"1 ","df":"10","bz":"aaa"},
{"bh":"112","lx":"2","df":" 20", "bz":"bbb"},
{"bh":"113","lx":"2","df":"30","bz":"ccc" }
]}
維持する必要があるサブ項目スコアは、bh: 数値、lx: タイプ、bz: 備考です。
独自のニーズに応じて、メンテナンスが必要な項目を追加できます。この json データはフォアグラウンドまたはバックグラウンドで構築できます。
この例では背景を配置しました。コードは次のとおりです:
StringBuilder jsonBuilder = new StringBuilder( );
jsonBuilder.Append("@{"");
jsonBuilder.Append("":["); >
int k = bh.Split(',').Length 1;
for (int i = 0; i
{
tem = "KH_PFX セット DF = '" EncriptLib.EncriptLib.EncodeCode(Convert.ToDouble(df.Split(',')[i].ToString().Trim())) "',"; >tem = "BZ = '" bz.Split(',')[i].ToString().Trim() "',PFRXM = '" Session["XM"].ToString() "',"; 🎜>tem = "PFRBH = '" Session["YHBH"].ToString() "',PFRQ = to_date('" DateTime.Now.ToShortDateString() "','yyyy-MM-dd')"; >tem = " where BH = '" bh.Split(',')[i].ToString().Trim() "'";
tem = "卐";個別の SQL ステートメント
jsonBuilder.Append("{"bh":" """ bh.Split(',')[i].ToString().Trim() """ ",");
jsonBuilder.Append(""lx":" """ lx.Split(',')[i].ToString().Trim() """ ","); ""df": " "" df.Split(',')[i].ToString().Trim() """ ",");
jsonBuilder.Append(""bz":" " "" bz.Split (',')[i].ToString().Trim() """ "},");
}
if(tem != "")
{
jsonBuilder.Remove (jsonBuilder.Length - 1, 1);
jsonBuilder.Append("}"); (GetType(), "cg", "<Script>window.close();opener.GetZXDF('zxdf" Request.QueryString["bh"].ToString() "','"parent_df.Text.Trim( ) "',' " jsonBuilder.ToString() "',"" tem "");</Script>");
}
「@」記号は回避できますjsonBuilder.ToString() の後、エスケープ文字 "" は消えます。
親フォームの GetZXDF() メソッドを呼び出して、json データを親フォームに渡します。
以下は、サブフォームのロード時に JSON データをバインドするコードです
コードをコピー
コードは次のとおりです:
$.each(data, function(i, n) {
if(n.lx == "1"){
//直接分類バインディング
$("#lx" n.bh).siblings("input").eq(0).val(n.df);
$("#lx" n.bh).siblings を定義します。 ( "input").eq(1).val(n.df);
$("#lx" n.bh).parent().parent().next().children().children( " textarea").val(n.bz);
}
if(n.lx == "2"){
//オプション分類のバインディング
$(" # lx" n.bh).siblings("input:text").eq(1).val(n.df);
$("#lx" n.bh).siblings("input:checkbox" ) .each(function(){
if($.trim($(this).val()) == $.trim(n.df)){
$(this).attr("checked " ,true);
}
});
$("#lx" n.bh).parent().parent().parent().next().children().children ( "textarea").val(n.bz);
}
});
opener.GetJson() メソッドが子フォームの json に渡されます。 data メソッドのコードは次のとおりです:
コードをコピー
コードは次のとおりです:
// 対応する評価項目のサブ項目の採点結果のjson文字列を数値で取得
function GetJson(p_bh)
{
//$("# zxdf" p_bh ).siblings("input").eq(1).val() は、子フォームから親フォームに渡された JSON データを格納します
return $("#zxdf" p_bh).siblings("input " ).eq(1).val();
}