Alireza_Salehi
یک شنبه 03 مرداد 1389, 21:24 عصر
با سلام خدمت اعضای محترم :
میخواستم بدونم آیا در ASP.NET این امکان وجود دارد که با استفاده از دستورات یک صفحه ایجاد کنیم و با دستورات محتوای صفحه ی ایجاد شده را طراحی کنیم.
قسمت دومش که به سادگی امکان پذیره، همه کنترل های HTML و ASP.NET ، استایل ها و .. از طریق کد قابل تولید و نمایش در خروجی هستند.
نحوه کار هم به این صورته که باید محتوای صفحه را با کلاس ها تولید کنید و با کلاس Response و HTMLTextWriter می توانید آن را به خروجی ببرید.
برای تولید صفحه هم باید در رویداد Application_BeginRequest که در فایل global.asax وجود دارد بررسی کنید اگر آدرس با منطبق بود صفحه مورد خروجی مورد نظر را به عنوان پاسخ ارسال کنید.
یک نمونه تولید پنجره popup حاوی یک جدول با استفاده از کلاس های دات نت در سی شارپ:
context.Response.ContentType = "text/plain";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
Int32 startHour = 13, endHour = 20, hourCounter = 0;
Int32 totalColumns = (endHour - startHour + 1) * 2 + 1;
Int32 hourColumns = endHour - startHour + 1;
NovinDiet.ClinicDataContext db = new NovinDiet.ClinicDataContext();
DateTime now = DateTime.Parse(context.Request.QueryString["d"].Trim());
DateTime startDate = new DateTime(now.Year, now.Month, now.Day, startHour, 0, 0);
DateTime endDate = new DateTime(now.Year, now.Month, now.Day, endHour, 55, 0);
DateTime startDateAlert = new DateTime(now.Year, now.Month, now.Day, 14, 0, 0);
DateTime endDateAlert = new DateTime(now.Year, now.Month, now.Day, 20, 0, 0);
List<TimeList> dbList = (from mv in db.novindiet_MemberVisits
where mv.Date >= startDate && mv.Date <= endDate &&
mv.Id.Trim().StartsWith(context.Request.QueryStrin g["t"].Trim().ToUpper())
select new TimeList()
{
Date = new DateTime(mv.Date.Year, mv.Date.Month, mv.Date.Day, mv.Date.Hour, mv.Date.Minute, 0),
VisitType = mv.VisitType
}).AsParallel().ToList();
HtmlTable table = new HtmlTable()
{
Border = 1,
BorderColor = "#494949",
CellPadding = 1,
CellSpacing = 1,
EnableViewState = false
};
table.Attributes.Add("class", "ts");
HtmlTableRow row = new HtmlTableRow();
HtmlTableCell cell = new HtmlTableCell() { ColSpan = totalColumns };
HtmlAnchor a = new HtmlAnchor() { InnerText = "X", HRef = "#", Title = "بستن فرم" };
a.Style.Add("float", "left");
a.Attributes.Add("onclick", String.Format("javascript:CloseTimeSelector('{0}');", context.Request.QueryString["c"].Trim()));
cell.Controls.Add(a);
HtmlGenericControl ctrl;
String title = "جدول روزانه بیماران";
ctrl = new HtmlGenericControl("span") { InnerText = title };
ctrl.Style.Add("float", "right");
ctrl.Style.Add("color", "#FFFFFF");
cell.Controls.Add(ctrl);
row.Attributes.Add("class", "tsh");
row.Cells.Add(cell);
table.Rows.Add(row);
row = new HtmlTableRow();
cell = new HtmlTableCell() { ColSpan = totalColumns };
a = new HtmlAnchor() { InnerText = "<<<", HRef = "#", Title = "ماه قبل" };
a.Style.Add("float", "right");
cell.Controls.Add(a);
a.Attributes.Add("onclick", String.Format("javascript:ShowTimeSelector('{0}','{1}','{2}','{3} ','{4}','{5}');",
context.Request.QueryString["c"].Trim(),
context.Request.QueryString["hs"].Trim(),
context.Request.QueryString["ms"].Trim(),
context.Request.QueryString["ds"].Trim(),
now.AddDays(-30).ToString("MM/dd/yyyy"),
context.Request.QueryString["t"].Trim().ToUpper()));
a = new HtmlAnchor() { InnerText = "<<", HRef = "#", Title = "هفته قبل" };
a.Style.Add("float", "right");
cell.Controls.Add(a);
a.Attributes.Add("onclick", String.Format("javascript:ShowTimeSelector('{0}','{1}','{2}','{3} ','{4}','{5}');",
context.Request.QueryString["c"].Trim(),
context.Request.QueryString["hs"].Trim(),
context.Request.QueryString["ms"].Trim(),
context.Request.QueryString["ds"].Trim(),
now.AddDays(-7).ToString("MM/dd/yyyy"),
context.Request.QueryString["t"].Trim().ToUpper()));
a = new HtmlAnchor() { InnerText = "<", HRef = "#", Title = "روز قبل" };
a.Style.Add("float", "right");
a.Attributes.Add("onclick", String.Format("javascript:ShowTimeSelector('{0}','{1}','{2}','{3} ','{4}','{5}');",
context.Request.QueryString["c"].Trim(),
context.Request.QueryString["hs"].Trim(),
context.Request.QueryString["ms"].Trim(),
context.Request.QueryString["ds"].Trim(),
now.AddDays(-1).ToString("MM/dd/yyyy"),
context.Request.QueryString["t"].Trim().ToUpper()));
cell.Controls.Add(a);
a = new HtmlAnchor() { InnerText = ">>>", HRef = "#", Title = "ماه بعد" };
a.Style.Add("float", "left");
cell.Controls.Add(a);
a.Attributes.Add("onclick", String.Format("javascript:ShowTimeSelector('{0}','{1}','{2}','{3} ','{4}','{5}');",
context.Request.QueryString["c"].Trim(),
context.Request.QueryString["hs"].Trim(),
context.Request.QueryString["ms"].Trim(),
context.Request.QueryString["ds"].Trim(),
now.AddDays(30).ToString("MM/dd/yyyy"),
context.Request.QueryString["t"].Trim().ToUpper()));
a = new HtmlAnchor() { InnerText = ">>", HRef = "#", Title = "هفته بعد" };
a.Style.Add("float", "left");
cell.Controls.Add(a);
a.Attributes.Add("onclick", String.Format("javascript:ShowTimeSelector('{0}','{1}','{2}','{3} ','{4}','{5}');",
context.Request.QueryString["c"].Trim(),
context.Request.QueryString["hs"].Trim(),
context.Request.QueryString["ms"].Trim(),
context.Request.QueryString["ds"].Trim(),
now.AddDays(7).ToString("MM/dd/yyyy"),
context.Request.QueryString["t"].Trim().ToUpper()));
a = new HtmlAnchor() { InnerText = ">", HRef = "#", Title = "روز بعد" };
a.Style.Add("float", "left");
a.Attributes.Add("onclick", String.Format("javascript:ShowTimeSelector('{0}','{1}','{2}','{3} ','{4}','{5}');",
context.Request.QueryString["c"].Trim(),
context.Request.QueryString["hs"].Trim(),
context.Request.QueryString["ms"].Trim(),
context.Request.QueryString["ds"].Trim(),
now.AddDays(1).ToString("MM/dd/yyyy"),
context.Request.QueryString["t"].Trim().ToUpper()));
cell.Controls.Add(a);
ctrl = new HtmlGenericControl("span") { InnerText = NovinDiet.Utility.FormatDate(now, "fa-IR", 1) };
ctrl.Style.Add("float", "none");
cell.Controls.Add(ctrl);
row.Cells.Add(cell);
row.Attributes.Add("class", "tsch");
table.Rows.Add(row);
row = new HtmlTableRow();
row.Cells.Add(new HtmlTableCell());
row.Cells[0].Attributes.Add("class", "tsh tscr");
hourCounter = startHour;
for (int i = 0; i < hourColumns; i++)
{
cell = new HtmlTableCell() { ColSpan = 2, InnerText = (hourCounter++).ToString() };
cell.Attributes.Add("class", "tsh tscr");
row.Cells.Add(cell);
}
table.Rows.Add(row);
for (int i = 0; i < 60; i += 5)
{
row = new HtmlTableRow();
row.Cells.Add(new HtmlTableCell() { InnerText = i.ToString() });
row.Cells[0].Attributes.Add("class", "tsh tscr");
hourCounter = startHour;
for (int j = startHour; j <= endHour; j++)
{
IEnumerable<TimeList> temp = dbList.Where(d => d.Date.Hour == j && d.Date.Minute == i).AsParallel();
if (temp.Any())
{
List<TimeList> temp2 = temp.ToList();
//Int32 c = temp.Count();
if (temp2.Count == 1)
{
cell = new HtmlTableCell() { InnerText = String.Format("{0}:{1}", j, i) };
cell.Attributes.Add("class", "tsf");
row.Cells.Add(cell);
cell = new HtmlTableCell() { InnerText = String.Format("{0}:{1}", j, i) };
cell.Attributes.Add("class", "tscc");
cell.Attributes.Add("onclick", String.Format("javascript:SetTime('{0}','{1}','{2}','{3}','{4}',' {5}','{6}');",
context.Request.QueryString["c"].Trim(),
context.Request.QueryString["hs"].Trim(),
context.Request.QueryString["ms"].Trim(),
context.Request.QueryString["ds"].Trim(),
j, i, NovinDiet.Utility.FormatDate(now, "fa-IR", 2)));
row.Cells.Add(cell);
}
else
{
cell = new HtmlTableCell() { InnerText = String.Format("{0}:{1}", j, i) };
cell.Attributes.Add("class", "tsf");
row.Cells.Add(cell);
cell = new HtmlTableCell() { InnerText = String.Format("{0}:{1}", j, i) };
cell.Attributes.Add("class", "tsf");
row.Cells.Add(cell);
}
}
else
{
cell = new HtmlTableCell() { InnerText = String.Format("{0}:{1}", j, i) };
cell.Attributes.Add("class", i % 10 == 0 ? "tsccf" : "tscc");
cell.Attributes.Add("onclick", String.Format("javascript:SetTime('{0}','{1}','{2}','{3}','{4}',' {5}','{6}');",
context.Request.QueryString["c"].Trim(),
context.Request.QueryString["hs"].Trim(),
context.Request.QueryString["ms"].Trim(),
context.Request.QueryString["ds"].Trim(),
j, i, NovinDiet.Utility.FormatDate(now, "fa-IR", 2)));
row.Cells.Add(cell);
cell = new HtmlTableCell() { InnerText = String.Format("{0}:{1}", j, i) };
cell.Attributes.Add("class", "tscc");
cell.Attributes.Add("onclick", String.Format("javascript:SetTime('{0}','{1}','{2}','{3}','{4}',' {5}','{6}');",
context.Request.QueryString["c"].Trim(),
context.Request.QueryString["hs"].Trim(),
context.Request.QueryString["ms"].Trim(),
context.Request.QueryString["ds"].Trim(),
j, i, NovinDiet.Utility.FormatDate(now, "fa-IR", 2)));
row.Cells.Add(cell);
}
}
row.Attributes.Add("class", "tsrr");
table.Rows.Add(row);
}
System.Web.UI.HtmlTextWriter tw = new System.Web.UI.HtmlTextWriter(context.Response.Outp ut);
table.RenderControl(tw);
خروجی هم به صورت زیر می شود:
http://up.iranblog.com/Files1/675167d14f8e4cec91fd.JPG
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.