الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

فصل الكود عن الHTML

مغلق
بدأه anasalama في 11 مايو 2005 · 1 رد · 490 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي ملف aspx.net يحتوي على كود C# إضافة للـHTML (أي أنه لا يوجد Code Behind) وأريد أن أفصل الملف إلى ملفين الأول HTML والثاني كود البرمجة لكن لا أعرف كيف ، فهل من فكرة عن هذا الموضوع .

هذا هو الملف كاملا :

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Data.SqlClient" %>

<html>

<title>Adding Rows</title>

<style>

a {behavior:url(..\..\mouseover.htc);}

hr {height:2px;color:black;}

.StdText {font-family:verdana;font-size:9pt;font-weight:bold;}

.StdTextBox {font-family:verdana;font-size:9pt;border:solid 1px black;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true');}

.Shadow {filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true');}

</style>

<script runat="server">

String [] aTitleOfCourtesy = new String[4] {"Ms.", "Mr.", "Mrs.", "Dr."};

public void Page_Load(Object sender, EventArgs e)

{

// Initialize only the first time...

if (!Page.IsPostBack)

{

lblURL.Text = Request.Url + "<hr>";

}

}

public void OnLoadData(Object sender, EventArgs e)

{

LoadData();

UpdateView();

}

public void AddNewRow(Object sender, EventArgs e)

{

// Grab the dataset

DataSet ds = (DataSet) Session["MyData"];

DataTable dt = ds.Tables["MyTable"];

// Add a blank row

DataRow dr = dt.NewRow();

dt.Rows.Add(dr);

// If needed, assign default values

// dr["column_name"] = ...

// Update the in-memory dataset

Session["MyData"] = ds;

// Index of the new item in the page: last +1

int nNewItemIndex = grid.Items.Count;

// If the is full, move to next page. In this case, first item

if (nNewItemIndex >= grid.PageSize)

{

grid.CurrentPageIndex ++;

nNewItemIndex = 0;

}

// Turn edit mode on for the newly added row

grid.EditItemIndex = nNewItemIndex;

// Refresh the grid

UpdateView();

}

public void PageIndexChanged(Object sender, DataGridPageChangedEventArgs e)

{

// Set the current item to edit mode

grid.CurrentPageIndex = e.NewPageIndex;

// Refresh the grid

UpdateView();

}

public void ItemCreated(Object sender, DataGridItemEventArgs e)

{

ListItemType lit = e.Item.ItemType;

if (lit == ListItemType.EditItem)

{

// Get the data row

DataRowView drv = (DataRowView) e.Item.DataItem;

// Initializes controls

DropDownList ddTitles = (DropDownList) e.Item.FindControl("ddTitles");

if (drv != null)

ddTitles.SelectedIndex = Array.IndexOf(aTitleOfCourtesy, drv["titleofcourtesy"].ToString());

}

//////////////////////////////////////////////////////////////////////////

if (lit == ListItemType.Pager)

{

// The pager as a whole has the following layout:

//

// <TR><TD colspan=X> ... links ... </TD></TR>

//

// Item points to <TR>. The code below moves to <TD>.

TableCell pager = (TableCell) e.Item.Controls[0];

// Loop through the pager buttons skipping over blanks

// (Blanks are treated as LiteralControl(s)

for (int i=0; i<pager.Controls.Count; i+=2)

{

Object o = pager.Controls;

if (o is LinkButton)

{

LinkButton h = (LinkButton) o;

h.Text = "[ " + h.Text + " ]";

}

else

{

Label l = (Label) o;

l.Text = "<b>Page " + l.Text + "</b>";

}

}

}

}

public void EditCommand(Object sender, DataGridCommandEventArgs e)

{

// Set the current item to edit mode

grid.EditItemIndex = e.Item.ItemIndex;

// Refresh the grid

UpdateView();

}

public void UpdateCommand(Object sender, DataGridCommandEventArgs e)

{

// Retrieve the new text from bound columns

int nColPositionIndex = 2; // 0-based position of the column

int nColFromIndex = 3; // 0-based position of the column

TextBox txtPosition = (TextBox) e.Item.Cells[nColPositionIndex].Controls[0];

TextBox txtFrom = (TextBox) e.Item.Cells[nColFromIndex].Controls[0];

// Retrieve the new text in the templated column

TextBox txtFirstName = (TextBox) e.Item.FindControl("txtFirstName");

TextBox txtLastName = (TextBox) e.Item.FindControl("txtLastName");

DropDownList ddTitles = (DropDownList) e.Item.FindControl("ddTitles");

// MUST decide whether to UPDATE or to INSERT. The decision is made based on

// the fact that the DataSet has added rows

DataSet ds = (DataSet) Session["MyData"];

DataTable dt = ds.Tables["MyTable"];

DataRow drLast = dt.Rows[dt.Rows.Count-1];

SqlConnection conn = new SqlConnection(txtConn.Text);

SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

if (drLast.RowState == DataRowState.Added)

{

// Drop the newly added row from memory

drLast.RejectChanges();

StringBuilder sb1 = new StringBuilder("");

sb1.Append("INSERT Employees (firstname, lastname, titleofcourtesy, title, country) VALUES(");

sb1.Append("@sFirstName, @sLastName, @sTitle, @sPosition, @sCountry)");

cmd.CommandText = sb1.ToString();

// EmployeeID is an identity column

SqlParameter p1 = new SqlParameter("@sPosition", SqlDbType.NVarChar, 30);

p1.Direction = ParameterDirection.Input;

p1.Value = txtPosition.Text;

cmd.Parameters.Add(p1);

SqlParameter p2 = new SqlParameter("@sCountry", SqlDbType.NVarChar, 15);

p2.Direction = ParameterDirection.Input;

p2.Value = txtFrom.Text;

cmd.Parameters.Add(p2);

SqlParameter p3 = new SqlParameter("@sTitle", SqlDbType.NVarChar, 25);

p3.Direction = ParameterDirection.Input;

p3.Value = ddTitles.SelectedItem.Text;

cmd.Parameters.Add(p3);

SqlParameter p4 = new SqlParameter("@sFirstName", SqlDbType.NVarChar, 10);

p4.Direction = ParameterDirection.Input;

p4.Value = txtFirstName.Text;

cmd.Parameters.Add(p4);

SqlParameter p5 = new SqlParameter("@sLastName", SqlDbType.NVarChar, 20);

p5.Direction = ParameterDirection.Input;

p5.Value = txtLastName.Text;

cmd.Parameters.Add(p5);

}

else

{

StringBuilder sb2 = new StringBuilder("");

sb2.Append("UPDATE Employees SET ");

sb2.Append("title=@sPosition, country=@sCountry, titleofcourtesy=@sTitle, ");

sb2.Append("firstname=@sFirstName, lastname=@sLastName ");

sb2.Append("WHERE employeeid=@nEmpID");

cmd.CommandText = sb2.ToString();

SqlParameter p1 = new SqlParameter("@nEmpID", SqlDbType.Int);

p1.Direction = ParameterDirection.Input;

p1.Value = grid.DataKeys[e.Item.ItemIndex];

cmd.Parameters.Add(p1);

SqlParameter p2 = new SqlParameter("@sPosition", SqlDbType.NVarChar, 30);

p2.Direction = ParameterDirection.Input;

p2.Value = txtPosition.Text;

cmd.Parameters.Add(p2);

SqlParameter p3 = new SqlParameter("@sCountry", SqlDbType.NVarChar, 15);

p3.Direction = ParameterDirection.Input;

p3.Value = txtFrom.Text;

cmd.Parameters.Add(p3);

SqlParameter p4 = new SqlParameter("@sTitle", SqlDbType.NVarChar, 25);

p4.Direction = ParameterDirection.Input;

p4.Value = ddTitles.SelectedItem.Text;

cmd.Parameters.Add(p4);

SqlParameter p5 = new SqlParameter("@sFirstName", SqlDbType.NVarChar, 10);

p5.Direction = ParameterDirection.Input;

p5.Value = txtFirstName.Text;

cmd.Parameters.Add(p5);

SqlParameter p6 = new SqlParameter("@sLastName", SqlDbType.NVarChar, 20);

p6.Direction = ParameterDirection.Input;

p6.Value = txtLastName.Text;

cmd.Parameters.Add(p6);

}

// Execute the command

conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

// Reset the edit mode for the current item

grid.EditItemIndex = -1;

// Refresh the grid

LoadData();

UpdateView();

}

public void CancelCommand(Object sender, DataGridCommandEventArgs e)

{

// Reset the edit mode for the current item

grid.EditItemIndex = -1;

// Reject changes on the last row

DataSet ds = (DataSet) Session["MyData"];

DataTable dt = ds.Tables["MyTable"];

DataRow drLast = dt.Rows[dt.Rows.Count-1];

if (drLast.RowState == DataRowState.Added)

{

drLast.RejectChanges();

if (grid.Items.Count == 1)

grid.CurrentPageIndex--;

}

// Refresh the grid

UpdateView();

}

////////////////////////////////////////////////////////////////////////

private void LoadData()

{

SqlConnection conn = new SqlConnection(txtConn.Text);

SqlDataAdapter da = new SqlDataAdapter(txtCommand.Text, conn);

DataSet ds = new DataSet();

da.Fill(ds, "MyTable");

Session["MyData"] = ds;

}

private void UpdateView()

{

DataSet ds = (DataSet) Session["MyData"];

// Bind the data

grid.DataSource = ds.Tables["MyTable"];

// Display the data

grid.DataBind();

}

private bool IsLastPage()

{

if (grid.CurrentPageIndex+1 == grid.PageCount)

return true;

return false;

}

</script>

<body bgcolor="ivory" style="font-family:arial;font-size:small">

<!-- ASP.NET topbar -->

<h2>Adding New Rows to DataGrids</h2>

<asp:Label runat="server" cssclass="StdText" font-bold="true">Current path: </asp:label>

<asp:Label runat="server" id="lblURL" cssclass="StdText" style="color:blue"></asp:label>

<form runat="server">

<table>

<tr>

<td><asp:label runat="server" text="Connection String" cssclass="StdText" /></td>

<td><asp:textbox runat="server" id="txtConn"

Enabled="false"

cssclass="StdTextBox"

width="600px"

text="DATABASE=Northwind;SERVER=localhost;UID=sa;PWD=;" /></td></tr>

<tr>

<td><asp:label runat="server" text="Command Text" cssclass="StdText"/></td>

<td><asp:textbox runat="server" id="txtCommand"

Enabled="false"

width="600px"

cssclass="StdTextBox"

text="SELECT employeeid, titleofcourtesy, firstname, lastname, title, country FROM Employees" /></td></tr></table>

<br>

<asp:linkbutton runat="server" text="Go get data..." onclick="OnLoadData" />

<hr>

<asp:DataGrid id="grid" runat="server"

AutoGenerateColumns="false"

CssClass="Shadow" BackColor="white"

CellPadding="2" CellSpacing="0"

BorderStyle="solid" BorderColor="black" BorderWidth="1"

Font-Size="x-small" Font-Names="verdana"

ShowFooter="true"

AllowPaging="true"

PageSize="4"

DataKeyField="employeeid"

OnItemCreated="ItemCreated"

OnPageIndexChanged="PageIndexChanged"

OnEditCommand="EditCommand"

OnUpdateCommand="UpdateCommand"

OnCancelCommand="CancelCommand">

<AlternatingItemStyle BackColor="palegoldenrod" />

<ItemStyle BackColor="beige" />

<PagerStyle Mode="NumericPages" HorizontalAlign="right" />

<EditItemStyle BackColor="yellow" Font-Bold="true" />

<HeaderStyle ForeColor="white" BackColor="brown" HorizontalAlign="center" Font-Bold="true" />

<columns>

<asp:BoundColumn runat="server" DataField="employeeid" HeaderText="ID" Readonly="true"

DataFormatString="<span style='margin-left:5;margin-right:5'>{0}</span>" >

<itemstyle backcolor="lightblue" font-bold="true" HorizontalAlign="right" />

</asp:BoundColumn>

<asp:TemplateColumn runat="server" HeaderText="Employee Name">

<itemtemplate>

<asp:label runat="server"

style="margin-left:5;margin-right:5"

Text='<%# DataBinder.Eval(Container.DataItem, "TitleOfCourtesy") + "<b> " +

DataBinder.Eval(Container.DataItem, "LastName") + "</b>" + ", " +

DataBinder.Eval(Container.DataItem, "FirstName") %>' />

</itemtemplate>

<edititemtemplate>

<asp:dropdownlist runat="server" id="ddTitles"

DataSource='<% # aTitleOfCourtesy %>' />

<asp:textbox runat="server" width="80px" id="txtFirstName" tabindex="0"

Text='<%# DataBinder.Eval(Container.DataItem, "firstname") %>' /><br>

<asp:textbox runat="server" width="140px" id="txtLastName"

Text='<%# DataBinder.Eval(Container.DataItem, "lastname") %>' />

</edititemtemplate>

<footertemplate>

<asp:linkbutton runat="server" id="btnNewRow" onclick="AddNewRow"

Enabled='<%# IsLastPage() %>' Text="Add new row..." />

</footertemplate>

</asp:TemplateColumn>

<asp:BoundColumn runat="server" DataField="title" HeaderText="Position" />

<asp:BoundColumn runat="server" DataField="country" HeaderText="From" />

<asp:EditCommandColumn runat="server"

EditText="<img src=edit.gif border=0 align=absmiddle alt='Edit this item'>"

UpdateText="<img src=ok.gif border=0 align=absmiddle alt='Save changes'>"

CancelText="<img src=cancel.gif border=0 align=absmiddle alt='Cancel editing'>">

<itemstyle BackColor="yellow" HorizontalAlign="center" />

</asp:EditCommandColumn>

</columns>

</asp:DataGrid>

</form>

</body>

</html>

أنــس عــمــار

#2

ممتاز ممتاز جدا جدا جدا

الحل بسيط وهو ان تستخدم XSLT مع Html وانا استخدم هذه الطريقة مع PHP وليس ASP وهي أفضل طريقة لتفصل كود ASP عن صفحة Html بإستخدام لغة سهله بسيطه اسمها XSLT وهي تابعه الى عائلة XML تكون داخل صفحة Html ويمكنك تعلم ذلكانقر هنا

هذا الموضوع مغلق.

مواضيع مشابهة