PDA

View Full Version : سوال: ایجاد دکمه سمت سرور در لیترال asp.net



mahdisky
پنج شنبه 24 اسفند 1391, 12:16 عصر
سلام من یک لیترال دارم که ازش برای نمایش جدولم استفاده کردم.
حالا می خوام جلوی هر ردیف یک دکمه بزارم که اون ردیف رو پاک کنه .

حالا دکمه asp چطوری توی لیترال بزارم؟
یا اینکه دکمه html بزارم، چطوری بهش دستور حذف کردن سمت سرور رو بهش بدم؟

اگه راه دیگه ای هم هست لطفا بفرمایید.
ممنون
asp.net
#C

saeed31641
پنج شنبه 24 اسفند 1391, 12:51 عصر
شما برای حذف کردن که باید یه تابع با ارسال اید اون رکرود به جدولت بنویسی .
<asp:Literal ID="Literal1" runat="server " text='<%Remove(id) %>'>'></asp:Literal>

mahdisky
جمعه 25 اسفند 1391, 22:12 عصر
ممنون
ولی سوالم اینه که چطور دکمه توی لیترال بزارم و بهش کد سمت سرور بدم؟

tree1371
شنبه 26 اسفند 1391, 14:59 عصر
سلام چند مدت پیش من داشتم روی یک پروژه فرم ساز آنلاین کار می کردم .

خوب اگر بدونید کنترل ها وقتی ترجمه میشن به Htm در میان این یعنی اینکه شما نمی تونید اون رو توی litقشl بزارید اما خوب یک راهی وجود داره اونم این هست که به صورت داینامیک دکمه خودتون رو بسازید . برای ساختن به صورت داینامیک می تونید از کد زیر استفاده کنید . اگر بگید واسه چه کاری می خواید این کارو بکنید بهتر میشه راهنمایی کرد.



protected void Page_Load()
{
Button ButtonChange = new Button();

ButtonChange.Text = "Change";
ButtonChange.ID = "change_" + i.ToString();
ButtonChange.Font.Size = FontUnit.Point(7);
ButtonChange.ControlStyle.CssClass = "button";
ButtonChange.Click += new EventHandler(test);
}

mahdisky
شنبه 26 اسفند 1391, 18:51 عصر
بله ممنون این توضیحات رو میدونم.الان مشکل اینجاست که شما این دکمه ای رو که ساختیت چطوری به لیترال میدینش ( Add می کنین تو لیترال)؟؟
ولی دکمه html رو میتونم توی لیترال بدم ولی اینکه دستور بهش بدم ، این چطوری میشه؟
توضیح کامل تر اینکه:من امدم برای نمایش محتویات جدولم که در sql ساخته شده از لیترال با طرح خواص خودم استفاده کردم . یعنی وقتی صفحه لود میشه محتویات از sql خوانده میشه و در لیترال قرار میگره .حالا میخوام جولوی
هر ردیف یه دکمه بزارم که وقتی روی دکمه زدم این ردیف رو از توی sql پاک کنه.
حالا مشکل اینجاست که (دو خط اول)...

Himalaya
یک شنبه 27 اسفند 1391, 17:20 عصر
سلام

1. حالا دکمه asp چطوری توی لیترال بزارم؟

2. یا اینکه دکمه html بزارم، چطوری بهش دستور حذف کردن سمت سرور رو بهش بدم؟

اینکه بخوای خود کنترل asp:button رو بزاری تو لیترال که خوب شدنی نیست. ولی از طریق مورد 2 میتونی مورد 1 را پیاده کنی. کنترلهای سمت سرور چیزی جز کنترلهای Html نیستن که رویدادهای سمت سرور اونها توسط جاوا اسکریپت فراخونی میشه.
مثال زیر فقط برای ایده گرفتن هستش.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI;

namespace Test
{
public partial class _Default : Page, IPostBackEventHandler
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack) return;
var dataSource = new List<Person>
{
new Person{ Id = 1, Age = 20, Fname = "A", Lname = "AA"},
new Person{ Id = 2, Age = 23, Fname = "B", Lname = "BB"},
new Person{ Id = 3, Age = 34, Fname = "C", Lname = "CC"},
new Person{ Id = 4, Age = 12, Fname = "D", Lname = "DD"},
new Person{ Id = 5, Age = 42, Fname = "E", Lname = "EE"},
};
Session["DataSource"] = dataSource;
CreateTableInLiteral();
}

private void CreateTableInLiteral()
{
var persons = Session["DataSource"] == null ? new List<Person>() : (List<Person>)Session["DataSource"];
var table = persons.Aggregate("<table border='1' align='center' style='text-align:center; width:300px; direction:rtl;'>" +
"<tr>" +
"<td>نام</td>" +
"<td>نام خانوادگی</td>" +
"<td>سن</td>" +
"<td>حذف</td>" +
"</tr>", (current, person) => current + ("<tr>" +
"<td>" + person.Fname + "</td>" +
"<td>" + person.Lname + "</td>" +
"<td>" + person.Age + "</td>" +
"<td><input type='button' value='حذف' onclick=\"" + Page.ClientScript.GetPostBackEventReference(this, Convert.ToString(person.Id)) + "\" /></td>" +
"</tr>"));
table += "</table>";
Literal1.Text = table;
}

public void RaisePostBackEvent(string eventArgument)
{
if (!string.IsNullOrEmpty(eventArgument))
DeleteRecord(int.Parse(eventArgument));
}

private void DeleteRecord(int id)
{
var persons = Session["DataSource"] == null ? new List<Person>() : (List<Person>)Session["DataSource"];
if (persons.Count == 0) return;
var selectedPerson = persons.FirstOrDefault(c => c.Id == id);
if (selectedPerson != null)
persons.Remove(selectedPerson);
CreateTableInLiteral();
}
}

public class Person
{
public int Id { get; set; }
public int Age { get; set; }
public string Fname { get; set; }
public string Lname { get; set; }
}
}

raziee
یک شنبه 27 اسفند 1391, 18:11 عصر
@mahdisky:
با سلام.
دلیل عدم استفاده از کنترل هایی مثل GridView و Repeater چیه که به خاطرش نمایش یک جدول رو بوسیله ی Literal انجام میدید؟