0. استخدم الجلسة لتحديد ما إذا كنت تريد تسجيل الدخول أم لا
إذا (جلسة ["تسجيل الدخول"] == فارغة)
{
Response.Redirect("error.aspx");
}
1. افتح نافذة جديدة وقم بنقل المعلمات:
معلمات الإرسال:
Response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>")
تلقي المعلمات:
سلسلة أ = Request.QueryString("id");
سلسلة ب = Request.QueryString("id1");
2. أضف مربع حوار إلى الزر
Button1.Attributes.Add("onclick"،"return confirm('تأكيد؟')");
Button.attributes.add("onclick"،"if(confirm('هل أنت متأكد...؟')){return true;}else{return false;}")
3. احذف السجلات المحددة في الجدول
int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];
سلسلةdeleteCmd = "حذف من الموظف حيث emp_id =" + intEmpID.ToString()
4. حذف تحذير سجل النموذج
DataGrid_ItemCreated باطلة خاصة (مرسل الكائن، DataGridItemEventArgs e)
{
التبديل (e.Item.ItemType)
{
حالة ListItemType.Item:
حالة ListItemType.AlternatingItem:
حالة ListItemType.EditItem:
TableCell myTableCell;
myTableCell = e.Item.Cells[14];
LinkButton myDeleteButton؛
myDeleteButton = (LinkButton)myTableCell.Controls[0];
myDeleteButton.Attributes.Add("onclick"،"return Confirm('هل أنت متأكد من رغبتك في حذف هذه الرسالة');");
استراحة؛
تقصير:
استراحة؛
}
}
5. انقر فوق أحد صفوف الجدول لربطه بصفحة أخرى
grdCustomer_ItemDataBound باطلة خاصة (مرسل الكائن، System.Web.UI.WebControls.DataGridItemEventArgs e)
{
// انقر فوق النموذج لفتحه
إذا (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
e.Item.Attributes.Add("onclick"،window.open('Default.aspx?id=" + e.Item.Cells[0].Text + "');");
}
انقر نقراً مزدوجاً فوق الجدول للاتصال بصفحة أخرى في الحدث itemDataBind
إذا (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
سلسلة OrderItemID =e.item.cells[1].Text;
...
e.item.Attributes.Add("ondblclick", "location.href='../ShippedGrid.aspx?id=" + OrderItemID + "'");
}
انقر نقراً مزدوجاً فوق الجدول لفتح صفحة جديدة
إذا (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
سلسلة OrderItemID =e.item.cells[1].Text;
...
e.item.Attributes.Add("ondblclick", "open('../ShippedGrid.aspx?id=" + OrderItemID + "')");
}
★ملاحظة خاصة: لا يمكن أن يكون [?id=] [?id =]
6. تمرير المعلمات في أعمدة الارتباط التشعبي للجدول
<asp:HyperLinkColumn Target="_blank" headertext="ID number" DataTextField="id" NavigateUrl="aaa.aspx?id='<%# DataBinder.Eval(Container.DataItem, "Data Field 1")%>' & name='<%# DataBinder.Eval(Container.DataItem, "Data Field 2")%>' />
7. انقر على الجدول لتغيير اللون
إذا (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onclick"،this.style.backgroundColor='#99cc00';this.style.color='buttontext';this.style.cursor='default';");
}
مكتوب في _ItemDataBound من DataGrid
إذا (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onmouseover"،this.style.backgroundColor='#99cc00';this.style.color='buttontext';
this.style.cursor='default';");
e.Item.Attributes.Add("onmouseout",this.style.backgroundColor='';this.style.color='';");
}
8. حول تنسيق التاريخ
إعداد تنسيق التاريخ
DataFormatString="{0:yyyy-MM-dd}"
أعتقد أنه ينبغي أن يكون في الحدث itembound
e.items.cell["your column"].text=DateTime.Parse(e.items.cell["your column"].text.ToString("yyyy-MM-dd"))
9. للحصول على معلومات الخطأ والانتقال إلى الصفحة المحددة، لا تستخدم Response.Redirect، ولكن استخدم Server.Transfer.
على سبيل المثال
// في global.asax
خطأ محمي باطل Application_Error(Object sender, EventArgs e) {
إذا كان (Server.GetLastError() هو HttpUnhandledException)
Server.Transfer("MyErrorPage.aspx");
// لا بأس بترك بقية الاستثناءات غير HttpUnhandledException لـ ASP.NET نفسه :)
}
ستؤدي إعادة التوجيه إلى إنشاء إعادة النشر وفقدان معلومات الخطأ، لذلك يجب تنفيذ إرشادات الصفحة مباشرة على جانب الخادم، بحيث يمكن الحصول على معلومات الخطأ في صفحة معالجة الأخطاء ومعالجتها وفقًا لذلك.
10. مسح ملفات تعريف الارتباط
Cookie.Expires=[DateTime];
Response.Cookies("اسم المستخدم").انتهاء الصلاحية = 0
11. معالجة الاستثناءات المخصصة
// فئة معالجة الاستثناءات المخصصة
باستخدام النظام؛
باستخدام System.Diagnostics؛
مساحة الاسم MyAppException
{
/// <الملخص>
/// فئة معالجة استثناء التطبيق الموروثة من فئة استثناء النظام ApplicationException.
/// تسجيل محتوى الاستثناء تلقائيًا في سجل تطبيق Windows NT/2000
/// </الملخص>
فئة عامة AppException:System.ApplicationException
{
publicAppException()
{
إذا (ApplicationConfiguration.EventLogEnabled)
LogEvent("حدث خطأ غير معروف.");
}
publicAppException (رسالة سلسلة)
{
LogEvent(message);
}
AppException العام (رسالة سلسلة، استثناء داخلي)
{
LogEvent(message);
إذا (innerException! = فارغ)
{
LogEvent(innerException.Message);
}
}
// فئة التسجيل
باستخدام النظام؛
باستخدام System.Configuration؛
باستخدام System.Diagnostics؛
باستخدام System.IO؛
باستخدام System.Text؛
باستخدام System.Threading؛
مساحة الاسم MyEventLog
{
/// <الملخص>
/// فئة تسجيل الأحداث، توفر دعم تسجيل الأحداث
/// <الملاحظات>
/// تحديد 4 طرق للتسجيل (خطأ، تحذير، معلومات، تتبع)
/// </ملاحظات>
/// </الملخص>
سجل تطبيق الفئة العامة
{
/// <الملخص>
/// سجل معلومات الخطأ في سجل أحداث Win2000/NT
/// <param name="message">المعلومات النصية المراد تسجيلها</param>
/// </الملخص>
خطأ الكتابة الفراغي العام (رسالة سلسلة)
{
WriteLog(TraceLevel.Error, message);
}
/// <الملخص>
/// سجل معلومات التحذير في سجل أحداث Win2000/NT
/// <param name="message">المعلومات النصية المراد تسجيلها</param>
/// </الملخص>
تحذير الكتابة باطل عام ثابت (رسالة سلسلة)
{
WriteLog(TraceLevel.Warning, message);
}
/// <الملخص>
/// سجل معلومات المطالبة في سجل أحداث Win2000/NT
/// <param name="message">المعلومات النصية المراد تسجيلها</param>
/// </الملخص>
WriteInfo الفراغ العام الثابت (رسالة سلسلة)
{
WriteLog(TraceLevel.Info, message);
}
/// <الملخص>
/// سجل معلومات التتبع في سجل أحداث Win2000/NT
/// <param name="message">المعلومات النصية المراد تسجيلها</param>
/// </الملخص>
WriteTrace الفراغ العام الثابت (رسالة السلسلة)
{
WriteLog(TraceLevel.Verbose, message);
}
/// <الملخص>
/// تنسيق تنسيق المعلومات النصية المسجلة في سجل الأحداث
/// <param name="ex">كائن الاستثناء الذي يحتاج إلى التنسيق</param>
/// <param name="catchInfo">سلسلة عنوان معلومات الاستثناء.</param>
/// <قيمة إعادة القيمة>
/// <para>سلسلة معلومات الاستثناء المنسقة، بما في ذلك محتوى الاستثناء ومكدس التتبع.</para>
/// </retvalue>
/// </الملخص>
String FormatException العامة الثابتة (استثناء على سبيل المثال، سلسلة CatchInfo)
{
StringBuilder strBuilder = new StringBuilder();
إذا (catchInfo != String.Empty)
{
strBuilder.Append(catchInfo).Append("rn");
}
strBuilder.Append(ex.Message).Append("rn").Append(ex.StackTrace);
إرجاع strBuilder.ToString();
}
/// <الملخص>
/// طريقة كتابة سجل الأحداث الفعلية
/// <param name="level">مستوى المعلومات المطلوب تسجيلها (خطأ، تحذير، معلومات، تتبع).</param>
/// <param name="messageText">النص المطلوب تسجيله.</param>
/// </الملخص>
سجل الكتابة الثابت الخاص (مستوى TraceLevel، نص رسالة السلسلة)
{
يحاول
{
EventLogEntryType LogEntryType;
التبديل (المستوى)
{
حالة TraceLevel.خطأ:
LogEntryType = EventLogEntryType.Error;
استراحة؛
حالة TraceLevel.تحذير:
LogEntryType = EventLogEntryType.Warning;
استراحة؛
حالة TraceLevel.Info:
LogEntryType = EventLogEntryType.Information;
استراحة؛
حالة TraceLevel.Verbose:
LogEntryType = EventLogEntryType.SuccessAudit;
استراحة؛
تقصير:
LogEntryType = EventLogEntryType.SuccessAudit;
استراحة؛
}
EventLog eventsLog = new EventLog("Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName );
//اكتب سجل الأحداث
EventLog.WriteEntry(messageText, LogEntryType);
}
قبض على {} // تجاهل أي استثناءات
}
} // سجل تطبيق الفئة
}
12. يتم تمرير اللوحة أفقيًا وتتوسع عموديًا تلقائيًا
<asp:panel style="overflow-x:scroll;overflow-y:auto;"></asp:panel>
13. تحويل أدخل إلى علامة التبويب
<script language="javascript" for="document" events="onkeydown">
if(event.keyCode==13 && events.srcElement.type!='button' && events.srcElement.type!='submit' && events.srcElement.type!='reset' && events.srcElement.type!=' '&& events.srcElement.type!='textarea');
this.event.keyCode=9;
</script>
onkeydown = "إذا (event.keyCode==13) events.keyCode=9"
14. عمود الاتصال الفائق DataGrid
DataNavigateUrlField = "اسم الحقل" DataNavigateUrlFormatString = "}"
15. صفوف DataGrid تغير لونها باستخدام الماوس
الفراغ الخاص DGzf_ItemDataBound (مرسل الكائن، System.Web.UI.WebControls.DataGridItemEventArgs e)
{
إذا (e.Item.ItemType!=ListItemType.Header)
{
e.Item.Attributes.Add( "onmouseout",this.style.backgroundColor=""+e.Item.Style["BACKGROUND-COLOR"]+""");
e.Item.Attributes.Add( "onmouseover",this.style.backgroundColor=""+ "#EFF3F7"+""");
}
}
16. عمود القالب
<ASP:TEMPLATECOLUMN مرئي = "False"sortexpression = "demo" headertext = "ID">
<نموذج العنصر>
<ASP:LABEL text='<%# DataBinder.Eval(Container.DataItem, "ArticleID")%>' runat="server" width="80%" id="lblColumn" />
</ITEMTEMPLATE>
</ASP:TEMPLATECOLUMN>
<ASP:TEMPLATECOLUMN headertext="check">
<HEADERSTYLE Wrap="False" Horizontalalign="Center"></HEADERSTYLE>
<نموذج العنصر>
<ASP:CHECKBOX id="chkExport" runat="server" />
</ITEMTEMPLATE>
<تعديل القالب>
<ASP:CHECKBOX id = "chkExportON" runat = "الخادم" ممكّن = "صحيح" />
</EDITITEMTEMPLATE>
</ASP:TEMPLATECOLUMN>
الكود خلف
الفراغ المحمي CheckAll_CheckedChanged (مرسل الكائن، System.EventArgs e)
{
// قم بتغيير تحديد الأعمدة لتحديد الكل أو لا شيء.
CheckBox chkExport;
إذا (التحقق من الكل. تم التحقق)
{
foreach (DataGridItem oDataGridItem في MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked = true;
}
}
آخر
{
foreach (DataGridItem oDataGridItem في MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked = false;
}
}
}
17. تنسيق الأرقام [نتيجة <%#Container.DataItem("price")%> هي 500.0000، كيف يتم تنسيقها إلى 500.00؟]
<%#Container.DataItem("price"،"{0:¥#,##0.00}")%>
كثافة العمليات ط = 123456؛
string s=i.ToString("###,###.00");
18. تنسيق التاريخ
[في صفحة aspx: <%# DataBinder.Eval(Container.DataItem, "Company_Ureg_Date")%>
معروض كـ: 11-8-2004 19:44:28
أريد فقط: 11-8-2004】
<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-Md}")%>
كيف ينبغي تغييره؟
[تاريخ التنسيق]
أخرجه، عادة ما يعترض
((DateTime)objectFromDB).ToString("yyyy-MM-dd");
[تعبير التحقق من صحة التاريخ]
أ. تنسيق الإدخال الصحيح التالي: [2004-2-29]، [2004-02-29 10:29:39 مساءً]، [2004/12/31]
^((d{2}(([02468][048])|([13579][26]))[-/s]?((((0?[13578])|(1[ 02]))[-/s]?((0?[1-9])|([1-2][0-9])|
(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][] 0-9])|(30)))|(0?2[-/s]?((0?[1-9])|([1-2][0-9]))) ))
|(d{2}(([02468][1235679])|([13579][01345789]))[-/s]?(((0?[13578])|(1[02] ]))[-/s]?((0?[1-9])|([1-2][0-9])
|(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2] [0-9])|(30)))|(0?2[-/s]?((0?[1-9])|(1[0-9])|(2[0] -8]))))))(s(((0?[1-9])|(1[0-2])):([0-5][0-9])(( s)|(:([0-5][0-9])s))([صباحًا|مساء|صباحًا|مساءً]{2,2})))?$
ب. تنسيق الإدخال الصحيح التالي: [0001-12-31]، [9999 09 30]، [2002/03/03]
^d{4}[-/s]?(((0[13578])|(1[02]))[-/s]?(([0-2][0] -9])|(3[01])))|(((0[469])|(11))[-/s]?(([0-2][0-9])| (30)))|(02[-/s]?[0-2][0-9]))$
[تحويل الحالة]
HttpUtility.HtmlEncode(string);
HttpUtility.HtmlDecode(سلسلة)
19. كيفية ضبط المتغيرات العالمية
Global.asax
في الحدث Application_Start()
إضافة تطبيق[اسم الخاصية] = xxx;
إنه المتغير العالمي الخاص بك
20. كيف يتم فتح نافذة جديدة بعد النقر فوق الاتصال الناتج عن HyperLinkColumn؟
يحتوي HyperLinkColumn على سمة Target، فقط قم بتعيين القيمة إلى "_blank" (Target="_blank").
[ASPNETMENU] انقر فوق عنصر القائمة لتظهر نافذة جديدة. قم بإضافة URLTarget="_blank" إلى عنصر القائمة في ملف MenuData.xml الخاص بك.
يحب:
<?xml version="1.0" encoding="GB2312"?>
<MenuData ImagesBaseURL="images/">
<مجموعة القائمة>
<MenuItem Label="معلومات المعلمة الداخلية" URL="Infomation.aspx" >
<معرف مجموعة القائمة = "بي بي سي">
<MenuItem Label = "معلومات الإعلان" URL = "Infomation.aspx" URLTarget = "_blank" LeftIcon = "file.gif"/>
<MenuItem Label="إعداد ملخص المعلومات" URL="NewInfo.aspx" LeftIcon="file.gif" />
...
من الأفضل ترقية قائمة aspnetmenu إلى الإصدار 1.2
21. مناقشة اللجنة
22. اقرأ قيمة TextBox للتحكم في DataGrid
foreach (DataGrid dgi في yourDataGrid.Items)
{
TextBox tb = (TextBox)dgi.FindControl("yourTextBoxId");
السل.نص....
}
23. توجد ثلاثة أعمدة قالب في DataGrid تحتوي على مربعات نصية: DG_ShuLiang (الكمية)، وDG_DanJian (سعر الوحدة)، وDG_JinE (المبلغ). وهي موجودة في العمود 5.6.7. ومن المطلوب حساب المبلغ تلقائيًا عند إدخال الكمية وسعر الوحدة، أي: الكمية * سعر الوحدة = ويشترط أيضًا أن يقتصر المبلغ على القيم الرقمية عند إدخاله. كيف يمكنني استخدام البرنامج النصي للعميل لتنفيذ هذه الوظيفة؟
〖أفكر في العودة〗
<asp:TemplateColumn HeaderText="الكمية">
<قالب العنصر>
<asp:TextBox id="ShuLiang" runat='server' Text='<%# DataBinder.Eval(Container.DataItem,"DG_ShuLiang")%>'
onkeyup = "جافا سكريبت: DoCal ()"
/>
<asp:RegularExpressionValidator id = "revS" runat = "الخادم" ControlToValidate = "ShuLiang" ErrorMessage = "يجب أن يكون عددًا صحيحًا" ValidationExpression = "^d+$" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="سعر الوحدة">
<قالب العنصر>
<asp:TextBox id="DanJian" runat='server' Text='<%# DataBinder.Eval(Container.DataItem,"DG_DanJian")%>'
onkeyup = "جافا سكريبت: DoCal ()"
/>
<asp:RegularExpressionValidator id = "revS2" runat = "الخادم" ControlToValidate = "DanJian" ErrorMessage = "يجب أن يكون رقميًا" ValidationExpression = "^d+(.d*)?$" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="المبلغ">
<قالب العنصر>
<asp:TextBox id="JinE" runat='server' Text='<%# DataBinder.Eval(Container.DataItem,"DG_JinE")%>' />
</ItemTemplate>
</asp:TemplateColumn>
<لغة البرمجة = "جافا سكريبت">
دالة دوكال ()
{
var e = events.srcElement;
varrow = e.parentNode.parentNode;
var txts =row.all.tags("INPUT");
إذا (!txts.length || txts.length < 3)
يعود؛
var q = txts[txts.length-3].value;
var p = txts[txts.length-2].value;
إذا (isNaN(ف) || هوNaN(p))
يعود؛
q = parseInt(q);
p = parseFloat(p);
txts[txts.length-1].value = (q * p).toFixed(2);
}
</script>
24. عندما يتم تحديد الصفوف الموجودة أسفل شبكة البيانات للمقارنة، لماذا يتم تحديثها دائمًا ثم التمرير إلى الأعلى؟ لا يمكن رؤية الصفوف المحددة للتو بسبب الشاشة.
page_load
page.smartNavigation=true
25. عند تعديل البيانات في Datagrid، عند النقر فوق مفتاح التحرير، تظهر البيانات في مربع النص. كيف يمكن التحكم في حجم مربع النص؟
DataGrid1_ItemDataBound (obj sender,DataGridItemEventArgs e) باطلة خاصة
{
for(int i=0;i<e.Item.Cells.Count-1;i++)
إذا (e.Item.ItemType==ListItemType.EditType)
{
e.Item.Cells.Attributes.Add("Width", "80px")
}
}
26. مربع الحوار
سلسلة ثابتة خاصة ScriptBegin = "<script language="JavaScript">";
سلسلة ثابتة خاصة ScriptEnd = "</script>";
ConfirmMessageBox الفراغ العام الثابت (سلسلة PageTarget، محتوى السلسلة)
{
string ConfirmContent="var retvalue="/blog/window.confirm('"+Content+"');"+"if(retValue){window.location="'"+PageTarget+"';}";
ConfirmContent=ScriptBegin + ConfirmContent + ScriptEnd;
Page ParameterPage = (Page)System.Web.HttpContext.Current.Handler;
ParameterPage.RegisterStartupScript("confirm",ConfirmContent);
//Response.Write(strScript);