PDA

View Full Version : راهنمایی در مورد استفاده از handler در ajax



mf_007
دوشنبه 24 شهریور 1393, 13:58 عصر
سلام لطفا در مورد استفاده از handler در ajax راهنمایی کنید .مثلا من می خوام نتیجه یه کوئری رو در یک دیتا تیبل بریزم و در یک تیبل اطلاعاتش رو بایند کنم و کل اون جدول رو به صورت ajax بفرستم به صفحه اصلی اگر از صفحات aspx به جای handler استفاده کنم مشکلی نیست چون جدول رو با کدهای html می سازم و اطلاعات رو بایند می کنم و کل صفحه رو می فرستم ولی اگر از generic handler استفاده کنم چطور باید این کار رو انجام بدم ؟ چظوری می تونم مثلا از یه ریپیتر در handler استفاده کنم و اطلاعاتش رو ارسال کنم ؟

mf_007
سه شنبه 25 شهریور 1393, 14:29 عصر
شاید منظورم رو خوب نرسوندم یه مثال ساده می زنم کد زیر رو نگاه کنید

public class post : IHttpHandler {

public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";

SqlConnection conn = new SqlConnection("server=.;database=dbtest;trusted_connection=true");
SqlCommand cmd = new SqlCommand("select top 10 * from tblSeat",conn);
DataTable dt = new DataTable();

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
context.Response.Write("<table border=1>");
context.Response.Write("<tr>");
context.Response.Write("<td>");
context.Response.Write("ردیف");
context.Response.Write("</td>");
context.Response.Write("<td>");
context.Response.Write("از صندلی");
context.Response.Write("</td>");
context.Response.Write("<td>");
context.Response.Write("تا صندلی");
context.Response.Write("</td>");
context.Response.Write("</tr>");
for (int i = 0; i < dt.Rows.Count; i++)
{
context.Response.Write("<tr>");
context.Response.Write("<td>");
context.Response.Write(dt.Rows[i]["row"].ToString());
context.Response.Write("</td>");
context.Response.Write("<td>");
context.Response.Write(dt.Rows[i]["az_seat"].ToString());
context.Response.Write("</td>");
context.Response.Write("<td>");
context.Response.Write(dt.Rows[i]["ta_seat"].ToString());
context.Response.Write("</td>");
context.Response.Write("</tr>");
}
context.Response.Write("</table>");
}

public bool IsReusable {
get {
return false;
}
}


}




می خوام بدون راه بهتری هست ؟
که انقدر کدهای html رو write نکنیم ؟
یا کلا من دارم راه رو اشتباه می رم ؟

ali.shahrivarian
سه شنبه 25 شهریور 1393, 14:43 عصر
به جای این کار میتونید از اطلاعاتتون query بسازید و بفرستید سمت کلاینت و اونجا جدول رو بسازید. زیاد فرقی نداره. مگر اینکه بخواید از کتابخونه هایی مثل telerik یا کندو استفاده کنید یا از knockOut یا AngularJS استفاده کنید که کلا بحث تغییر میکنه.

fakhravari
سه شنبه 25 شهریور 1393, 15:29 عصر
http://www.aspsnippets.com/Articles/Call-ASPNet-Page-Method-using-jQuery-AJAX-Example.aspx
http://www.codeproject.com/Articles/17203/Using-jQuery-for-AJAX-in-ASP-NET

mf_007
سه شنبه 25 شهریور 1393, 16:15 عصر
به جای این کار میتونید از اطلاعاتتون query بسازید و بفرستید سمت کلاینت و اونجا جدول رو بسازید. زیاد فرقی نداره. مگر اینکه بخواید از کتابخونه هایی مثل telerik یا کندو استفاده کنید یا از knockOut یا AngularJS استفاده کنید که کلا بحث تغییر میکنه.

در مورد جمله اولت یکم توضیح می دی ؟ ممنون

fakhravari
سه شنبه 25 شهریور 1393, 16:23 عصر
در مورد جمله اولت یکم توضیح می دی ؟ ممنون
این بیخیال

ali.shahrivarian
سه شنبه 25 شهریور 1393, 16:37 عصر
public list<DataTable> requestData(){
SqlConnection conn = new SqlConnection("server=.;database=dbtest;trusted_co nnection=true");
SqlCommand cmd = new SqlCommand("select top 10 * from tblSeat",conn);
DataTable dt = new DataTable();


conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
list<DataTable> lst = new list<DataTable>();
lst.AddRange(dt);
return lst;


}






$.ajax({
type:"POST",
data:{},
url:"function url"
success:function(result){
var newTable = $('<table></table>');
var newTBody = $('<tbody></tbody>');
var header = $('<thead></thead>');
for(var names in result[0]){
var hTd = $('<td></td>');
hTd.html(names);
header.append(hTd);
newTable.append(header);
}
for(var key in result){
var newTr = $('<tr></tr>');
for(var col in result[key]){
var newTd = $('<td></td>');
newTd.html(result[key][col]);
newTr.append(newTd);
}
newTBody.append(newTr);
}
newTable.append(newTBody);
$('body').append(newTable);
}
});