AjaxProはどのようにオブジェクトのパラメータを伝えます
24918 ワード
C#フォーラム同期アドレス:http://www.cckan.net/thread-1065-1-1.html
AjaxProがC#メソッドにオブジェクトを渡すのは、AjaxProがオブジェクトをC#メソッドに渡すといってもよい.C#メソッドのパラメータがオブジェクトであれば、私のメソッドのように次のように伝えるべきです.
では、フロントではどのように伝えたらいいのでしょうか.実は簡単ですね.私のJSの方法を見てください.
もちろん私のcreateParameterの方法、つまりこの方法で完成したObjオブジェクトを提供しなければなりません.
では、皆さんが使いたいなら、ajax='true'はiintとString ajax='trueを表します.d'時間タイプajax='true_f'浮動小数点タイプ、decimalタイプの例
View Code
効果を見てみましょう
まとめてみます.
1.パラメータの場合はバックグラウンドオブジェクトの個数と異なる場合があります
2.パラメータのデータ型は同じでなければなりません.
3.整数およびStringタイプの場合のみ、変換を必要とせず、他の場合は強制的にタイプを変換する必要があります.
AjaxProがC#メソッドにオブジェクトを渡すのは、AjaxProがオブジェクトをC#メソッドに渡すといってもよい.C#メソッドのパラメータがオブジェクトであれば、私のメソッドのように次のように伝えるべきです.
[AjaxMethod()]
/// <summary>
///
/// </summary>
/// <param name="model"> </param>
/// <param name="_currentpage"> </param>
/// <param name="_pagesite"> </param>
/// <returns></returns>
public DataSet sp_select_users(Sys_Users model, int _currentpage, int _pagesite)
{
//
}
では、フロントではどのように伝えたらいいのでしょうか.実は簡単ですね.私のJSの方法を見てください.
$(function () {
$("#btnSelect").click(function () {
selectuser();
});
});
function selectuser() {
// Obj
var Obj = createParameter();
// Obj
var result = UserSelect.sp_select_users(Obj, 1, 10);
//
if (result.value) {
var ds = result.value;
var table = ds.Tables[0];
var pagecount = ds.Tables[1].Rows[0].pagecount;
var sb = "<table width=\"90%\" align=\"center\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
sb = sb + "<tr>"
for (var i = 0; i < table.Columns.length; i++) {
sb = sb + "<td>" + table.Columns.Name + "</td>";
}
sb = sb + "</tr>"
//Rows
for (var i = 0; i < table.Rows.length; i++) {
var dr = table.Rows;
sb = sb + "<tr onmouseover=\"this.style.backgroundColor='#F3F7F8'\" " +
"onmouseout=\"this.style.backgroundColor=''\">"
for (var j = 0; j < table.Columns.length; j++) {
sb = sb + "<td>" + eval('dr.' + table.Columns[j].Name) + "</td>";
}
sb = sb + "</tr>";
}
sb = sb + ' </table>';
$("#sysusertable").html(sb)
}
}
もちろん私のcreateParameterの方法、つまりこの方法で完成したObjオブジェクトを提供しなければなりません.
/// <reference path="jquery-1.4.1-vsdoc.js" />
/**
* :
*/
function createParameter() {
var objStr = "var Obj = new Object();";
//
$("[ajax='true']").each(function () {
var value = $(this).attr("value");
if (value == "") {
value = "-1";
}
objStr = objStr + "Obj." + $(this).attr("id") + " = \"" + value + "\";";
});
//
$("[ajax='true_d']").each(function () {
var value = $(this).attr("value");
if (value == "") {
value = "2000-01-01";
}
objStr = objStr + "Obj." + $(this).attr("id") + " = " + getdate(value) + ";";
});
// Float
$("[ajax='true_f']").each(function () {
var value = $(this).attr("value");
if (value == "") {
value = "-1.00";
}
objStr = objStr + "Obj." + $(this).attr("id") + " = parseFloat('" + value + ".00');";
});
eval(objStr);
return Obj;
// Obj
}
function getdate(strdate) {
return 'new Date(' + strdate.replace(/\d+(?=-[^-]+$)/,
function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')';
}
では、皆さんが使いたいなら、ajax='true'はiintとString ajax='trueを表します.d'時間タイプajax='true_f'浮動小数点タイプ、decimalタイプの例
View Code
<form id="form1" runat="server">
<div>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td height="25" width="30%" align="right">
ID :
</td>
<td height="25" width="*" align="left">
<asp:TextBox ID="userclass_id" ajax='true' runat="server" Width="200px"></asp:TextBox>
</td>
</tr>
<tr>
<td height="25" width="30%" align="right">
ID :
</td>
<td height="25" width="*" align="left">
<asp:TextBox ID="role_id" ajax='true' runat="server" Width="200px"></asp:TextBox>
</td>
</tr>
<tr>
<td height="25" width="30%" align="right">
ID sys_agent :
</td>
<td height="25" width="*" align="left">
<asp:TextBox ID="agent_id" ajax='true' runat="server" Width="200px"></asp:TextBox>
</td>
</tr>
<tr>
<td height="25" width="30%" align="right">
:
</td>
<td height="25" width="*" align="left">
<asp:TextBox ID="username" ajax='true' runat="server" Width="200px"></asp:TextBox>
</td>
</tr>
<tr>
<td height="25" width="30%" align="right">
:
</td>
<td height="25" width="*" align="left">
<asp:TextBox ID="email" ajax='true' runat="server" Width="200px"></asp:TextBox>
</td>
</tr>
<tr>
<td height="25" width="30%" align="right">
:
</td>
<td height="25" width="*" align="left">
<asp:TextBox ID="balance" ajax='true_f' runat="server" Width="200px"></asp:TextBox>
</td>
</tr>
<tr>
<td height="25" width="30%" align="right">
:
</td>
<td height="25" width="*" align="left">
<asp:TextBox ID="st" ajax='true_d' runat="server" Width="198px"></asp:TextBox>
</td>
</tr>
<tr>
<td height="25" width="30%" align="right">
:
</td>
<td height="25" width="*" align="left">
<asp:TextBox ID="et" ajax='true_d' runat="server" Width="200px"></asp:TextBox>
</td>
</tr>
</table>
</div>
<input id="btnSelect" type="button" value="button" />
<br/>
<br/>
<asp:Table ID="sysusertable" runat="server">
</asp:Table>
</form>
効果を見てみましょう
まとめてみます.
1.パラメータの場合はバックグラウンドオブジェクトの個数と異なる場合があります
2.パラメータのデータ型は同じでなければなりません.
3.整数およびStringタイプの場合のみ、変換を必要とせず、他の場合は強制的にタイプを変換する必要があります.