0. Verwenden Sie die Sitzung, um zu bestimmen, ob Sie sich anmelden möchten
if(Session["login"] == null)
{
Response.Redirect("error.aspx");
}
1. Neues Fenster öffnen und Parameter übergeben:
Übertragungsparameter:
Response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>")
Empfangsparameter:
string a = Request.QueryString("id");
string b = Request.QueryString("id1");
2. Fügen Sie der Schaltfläche ein Dialogfeld hinzu
Button1.Attributes.Add("onclick","return activate('Confirm?')");
button.attributes.add("onclick","if(confirm('Sind Sie sicher...?')){return true;}else{return false;}")
3. Löschen Sie ausgewählte Datensätze in der Tabelle
int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];
string deleteCmd = „DELETE from Employee where emp_id = „ + intEmpID.ToString()
4. Warnung zum Löschen des Formulardatensatzes
private void DataGrid_ItemCreated(Object sender,DataGridItemEventArgs e)
{
switch(e.Item.ItemType)
{
Fall ListItemType.Item:
Fall ListItemType.AlternatingItem :
Fall ListItemType.EditItem:
TableCell myTableCell;
myTableCell = e.Item.Cells[14];
LinkButton myDeleteButton;
myDeleteButton = (LinkButton)myTableCell.Controls[0];
myDeleteButton.Attributes.Add("onclick","return activate('Sind Sie sicher, dass Sie diese Nachricht löschen möchten');");
brechen;
Standard:
brechen;
}
}
5. Klicken Sie auf eine Tabellenzeile, um eine Verknüpfung zu einer anderen Seite herzustellen
private void grdCustomer_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
//Klicken Sie auf das Formular, um es zu öffnen
if (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 + "');");
}
Doppelklicken Sie auf die Tabelle, um eine Verbindung zu einer anderen Seite im itemDataBind-Ereignis herzustellen
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string OrderItemID =e.item.cells[1].Text;
...
e.item.Attributes.Add("ondblclick", "location.href='../ShippedGrid.aspx?id=" + OrderItemID + "'");
}
Doppelklicken Sie auf die Tabelle, um eine neue Seite zu öffnen
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string OrderItemID =e.item.cells[1].Text;
...
e.item.Attributes.Add("ondblclick", "open('../ShippedGrid.aspx?id=" + OrderItemID + "')");
}
★Besonderer Hinweis: [?id=] kann nicht [?id =] sein
6. Übergeben Sie Parameter in Tabellen-Hyperlink-Spalten
<asp:HyperLinkColumn Target="_blank" headertext="ID-Nummer" DataTextField="id" NavigateUrl="aaa.aspx?id='<%# DataBinder.Eval(Container.DataItem, "Data Field 1")%>' & name='<%# DataBinder.Eval(Container.DataItem, "Data Field 2")%>' />
7. Klicken Sie auf die Tabelle, um die Farbe zu ändern
if (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';");
}
Geschrieben in _ItemDataBound von DataGrid
if (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. Informationen zum Datumsformat
Einstellung des Datumsformats
DataFormatString="{0:yyyy-MM-dd}"
Ich denke, es sollte im itembound-Ereignis sein
e.items.cell["Ihre Spalte"].text=DateTime.Parse(e.items.cell["Ihre Spalte"].text.ToString("yyyy-MM-dd"))
9. Um Fehlerinformationen zu erhalten und zur angegebenen Seite zu gelangen, verwenden Sie nicht Response.Redirect, sondern Server.Transfer.
z.B.
// in global.asax
protected void Application_Error(Object sender, EventArgs e) {
if (Server.GetLastError() ist HttpUnhandledException)
Server.Transfer("MyErrorPage.aspx");
//Es ist in Ordnung, den Rest der Nicht-HttpUnhandledException-Ausnahmen ASP.NET selbst zu überlassen :)
}
Durch die Umleitung wird ein Postback generiert und Fehlerinformationen gehen verloren. Daher sollte die Seitenführung direkt auf der Serverseite ausgeführt werden, damit die Fehlerinformationen auf der Fehlerbehandlungsseite abgerufen und entsprechend verarbeitet werden können.
10. Cookies löschen
Cookie.Expires=[DateTime];
Response.Cookies("Benutzername").Expires = 0
11. Benutzerdefinierte Ausnahmebehandlung
//Benutzerdefinierte Ausnahmebehandlungsklasse
Verwenden des Systems;
Verwenden von System.Diagnostics;
Namespace MyAppException
{
/// <Zusammenfassung>
/// Anwendungsausnahmebehandlungsklasse, geerbt von der Systemausnahmeklasse ApplicationException.
/// Ausnahmeinhalt automatisch im Anwendungsprotokoll von Windows NT/2000 aufzeichnen
/// </summary>
öffentliche Klasse AppException:System.ApplicationException
{
publicAppException()
{
if (ApplicationConfiguration.EventLogEnabled)
LogEvent("Ein unbekannter Fehler ist aufgetreten.");
}
publicAppException(string message)
{
LogEvent(Nachricht);
}
öffentliche AppException(string message,Exception innerException)
{
LogEvent(Nachricht);
if (innerException != null)
{
LogEvent(innerException.Message);
}
}
//Protokollierungsklasse
Verwenden des Systems;
Verwenden von System.Configuration;
Verwenden von System.Diagnostics;
mit System.IO;
Verwenden von System.Text;
Verwenden von System.Threading;
Namespace MyEventLog
{
/// <Zusammenfassung>
/// Ereignisprotokollierungsklasse, die Unterstützung für die Ereignisprotokollierung bereitstellt
/// <Bemerkungen>
/// Definiert 4 Protokollierungsmethoden (Fehler, Warnung, Info, Trace)
/// </remarks>
/// </summary>
öffentliche Klasse ApplicationLog
{
/// <Zusammenfassung>
/// Fehlerinformationen im Win2000/NT-Ereignisprotokoll aufzeichnen
/// <param name="message">Aufzuzeichnende Textinformationen</param>
/// </summary>
public static void WriteError(String message)
{
WriteLog(TraceLevel.Error, message);
}
/// <Zusammenfassung>
/// Warninformationen im Win2000/NT-Ereignisprotokoll aufzeichnen
/// <param name="message">Aufzuzeichnende Textinformationen</param>
/// </summary>
public static void WriteWarning(String message)
{
WriteLog(TraceLevel.Warning, message);
}
/// <Zusammenfassung>
/// Zeichnen Sie die Eingabeaufforderungsinformationen im Win2000/NT-Ereignisprotokoll auf
/// <param name="message">Aufzuzeichnende Textinformationen</param>
/// </summary>
public static void WriteInfo(String message)
{
WriteLog(TraceLevel.Info, Nachricht);
}
/// <Zusammenfassung>
/// Protokollierungsinformationen im Win2000/NT-Ereignisprotokoll aufzeichnen
/// <param name="message">Aufzuzeichnende Textinformationen</param>
/// </summary>
public static void WriteTrace(String message)
{
WriteLog(TraceLevel.Verbose, message);
}
/// <Zusammenfassung>
/// Formatieren Sie das im Ereignisprotokoll aufgezeichnete Textinformationsformat
/// <param name="ex">Ausnahmeobjekt, das formatiert werden muss</param>
/// <param name="catchInfo">Titelzeichenfolge der Ausnahmeinformationen.</param>
/// <retvalue>
/// <para>Formatierte Ausnahmeinformationszeichenfolge, einschließlich Ausnahmeinhalt und Trace-Stack.</para>
/// </retvalue>
/// </summary>
öffentliche statische String FormatException (Ausnahme ex, String CatchInfo)
{
StringBuilder strBuilder = new StringBuilder();
if (catchInfo != String.Empty)
{
strBuilder.Append(catchInfo).Append("rn");
}
strBuilder.Append(ex.Message).Append("rn").Append(ex.StackTrace);
return strBuilder.ToString();
}
/// <Zusammenfassung>
/// Tatsächliche Methode zum Schreiben des Ereignisprotokolls
/// <param name="level">Die Ebene der aufzuzeichnenden Informationen (Fehler, Warnung, Info, Trace).</param>
/// <param name="messageText">Aufzuzeichnender Text.</param>
/// </summary>
private static void WriteLog(TraceLevel level, String messageText)
{
versuchen
{
EventLogEntryType LogEntryType;
Schalter (Niveau)
{
Fall TraceLevel.Error:
LogEntryType = EventLogEntryType.Error;
brechen;
Fall TraceLevel.Warning:
LogEntryType = EventLogEntryType.Warning;
brechen;
Fall TraceLevel.Info:
LogEntryType = EventLogEntryType.Information;
brechen;
Fall TraceLevel.Verbose:
LogEntryType = EventLogEntryType.SuccessAudit;
brechen;
Standard:
LogEntryType = EventLogEntryType.SuccessAudit;
brechen;
}
EventLog eventLog = new EventLog("Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName );
//Ereignisprotokoll schreiben
eventLog.WriteEntry(messageText, LogEntryType);
}
Catch {} //Alle Ausnahmen ignorieren
}
} //Klasse ApplicationLog
}
12. Das Panel scrollt horizontal und wird automatisch vertikal erweitert
<asp:panel style="overflow-x:scroll;overflow-y:auto;"></asp:panel>
13. Konvertieren Sie Enter in Tab
<script language="javascript" for="document" event="onkeydown">
if(event.keyCode==13 && event.srcElement.type!='button' && event.srcElement.type!='submit' && event.srcElement.type!='reset' && event.srcElement.type!=' '&& event.srcElement.type!='textarea');
event.keyCode=9;
</script>
onkeydown="if(event.keyCode==13) event.keyCode=9"
14. DataGrid-Superverbindungsspalte
DataNavigateUrlField="Feldname" DataNavigateUrlFormatString="}"
15.DataGrid-Zeilen ändern ihre Farbe mit der Maus
private void DGzf_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (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. Vorlagenspalte
<ASP:TEMPLATECOLUMN sichtbar="False" sortexpression="demo" headertext="ID">
<ITEMTEMPLATE>
<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>
<ITEMTEMPLATE>
<ASP:CHECKBOX id="chkExport" runat="server" />
</ITEMTEMPLATE>
<EDITITEMTEMPLATE>
<ASP:CHECKBOX id="chkExportON" runat="server" aktiviert="true" />
</EDITITEMTEMPLATE>
</ASP:TEMPLATECOLUMN>
Code dahinter
protected void CheckAll_CheckedChanged(object sender, System.EventArgs e)
{
//Ändern Sie die Auswahl der Spalten, um alle oder keine auszuwählen.
CheckBox chkExport;
if(CheckAll.Checked)
{
foreach(DataGridItem oDataGridItem in MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked = true;
}
}
anders
{
foreach(DataGridItem oDataGridItem in MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked = false;
}
}
}
17. Zahlenformatierung [Das Ergebnis von <%#Container.DataItem("price")%> ist 500,0000, wie formatiert man es auf 500,00?]
<%#Container.DataItem("price","{0:¥#,##0.00}")%>
int i=123456;
string s=i.ToString("###,###.00");
18. Datumsformatierung
[Auf der ASPX-Seite: <%# DataBinder.Eval(Container.DataItem, "Company_Ureg_Date")%>
Angezeigt als: 2004-8-11 19:44:28
Ich möchte nur: 2004-8-11】
<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-Md}")%>
Wie soll es geändert werden?
[Datum formatieren]
Nehmen Sie es heraus, normalerweise Gegenstand
((DateTime)objectFromDB).ToString("yyyy-MM-dd");
[Validierungsausdruck für Datum]
A. Das folgende korrekte Eingabeformat: [29.02.2004], [29.02.2004 22:29:39 Uhr], [31.12.2004]
^((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))([AM|PM|am|pm]{2,2})))?$
B. Das folgende korrekte Eingabeformat: [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]))$
[Fallkonvertierung]
HttpUtility.HtmlEncode(string);
HttpUtility.HtmlDecode(string)
19. So legen Sie globale Variablen fest
Global.asax
Im Application_Start()-Ereignis
Anwendung hinzufügen[Eigenschaftsname] = xxx;
Es ist Ihre globale Variable
20. Wie öffne ich ein neues Fenster, nachdem ich auf die von HyperLinkColumn generierte Verbindung geklickt habe?
HyperLinkColumn hat ein Attribut Target, setzen Sie einfach den Wert auf „_blank“ (Target="_blank").
[ASPNETMENU] Klicken Sie auf den Menüpunkt, um ein neues Fenster zu öffnen. Fügen Sie URLTarget="_blank" zum Menüpunkt in Ihrer Datei „menuData.xml“ hinzu.
wie:
<?xml version="1.0"kodierung="GB2312"?>
<MenuData ImagesBaseURL="images/">
<MenüGruppe>
<MenuItem Label="Interne Parameterinformationen" URL="Infomation.aspx" >
<MenuGroup ID="BBC">
<MenuItem Label="Announcement Information" URL="Infomation.aspx" URLTarget="_blank" LeftIcon="file.gif"/>
<MenuItem Label="Informationsbesprechung vorbereiten" URL="NewInfo.aspx" LeftIcon="file.gif" />
...
Am besten aktualisieren Sie Ihr aspnetmenu auf Version 1.2
21. Diskussion der Kommission
22. Lesen Sie den TextBox-Wert des DataGrid-Steuerelements
foreach(DataGrid dgi in yourDataGrid.Items)
{
TextBox tb = (TextBox)dgi.FindControl("yourTextBoxId");
tb.Text....
}
23. Es gibt drei Vorlagenspalten im DataGrid, die Textfelder enthalten: DG_ShuLiang (Menge), DG_DanJian (Stückpreis) und DG_JinE (Betrag). Sie sind in Spalte 5.6.7 erforderlich, um den Betrag automatisch zu berechnen Menge und Stückpreis, das heißt: Menge * Stückpreis = Die Menge muss bei der Eingabe auch auf numerische Werte beschränkt werden. Wie kann ich diese Funktion mithilfe eines Client-Skripts implementieren?
„Ich denke über eine Rückkehr nach“
<asp:TemplateColumn HeaderText="Quantity">
<ItemTemplate>
<asp:TextBox id="ShuLiang" runat='server' Text='<%# DataBinder.Eval(Container.DataItem,"DG_ShuLiang")%>'
onkeyup="javascript:DoCal()"
/>
<asp:RegularExpressionValidator id="revS" runat="server" ControlToValidate="ShuLiang" ErrorMessage="muss eine ganze Zahl sein" ValidationExpression="^d+$" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Einheitspreis">
<ItemTemplate>
<asp:TextBox id="DanJian" runat='server' Text='<%# DataBinder.Eval(Container.DataItem,"DG_DanJian")%>'
onkeyup="javascript:DoCal()"
/>
<asp:RegularExpressionValidator id="revS2" runat="server" ControlToValidate="DanJian" ErrorMessage="must be numeric" ValidationExpression="^d+(.d*)?$" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Amount">
<ItemTemplate>
<asp:TextBox id="JinE" runat='server' Text='<%# DataBinder.Eval(Container.DataItem,"DG_JinE")%>' />
</ItemTemplate>
</asp:TemplateColumn>
<script language="javascript">
functionDoCal()
{
var e = event.srcElement;
var row = e.parentNode.parentNode;
var txts = row.all.tags("INPUT");
if (!txts.length || txts.length < 3)
zurückkehren;
var q = txts[txts.length-3].value;
var p = txts[txts.length-2].value;
if (isNaN(q) || isNaN(p))
zurückkehren;
q = parseInt(q);
p = parseFloat(p);
txts[txts.length-1].value = (q * p).toFixed(2);
}
</script>
24.Wenn die Zeilen am unteren Rand des Datenrasters zum Vergleich ausgewählt werden, warum wird es dann immer aktualisiert und dann nach oben gescrollt? Die gerade ausgewählten Zeilen sind aufgrund des Bildschirms nicht sichtbar.
page_load
page.smartNavigation=true
25. Wenn Sie Daten in Datagrid ändern und auf die Bearbeitungstaste klicken, werden die Daten im Textfeld angezeigt. Wie kann die Größe des Textfelds gesteuert werden?
private void DataGrid1_ItemDataBound(obj sender,DataGridItemEventArgs e)
{
for(int i=0;i<e.Item.Cells.Count-1;i++)
if(e.Item.ItemType==ListItemType.EditType)
{
e.Item.Cells.Attributes.Add("Width", "80px")
}
}
26. Dialogfeld
privater statischer String ScriptBegin = "<script language="JavaScript">";
privater statischer String ScriptEnd = "</script>";
public static void ConfirmMessageBox(string PageTarget,string Content)
{
string ConfirmContent="var retvalue="/blog/window.confirm('"+Content+"');"+"if(retValue){window.location="'"+PageTarget+"';}";
Bestätigen Sie den Inhalt = SkriptBegin + Bestätigen Sie den Inhalt + SkriptEnde;
Page ParameterPage = (Page)System.Web.HttpContext.Current.Handler;
ParameterPage.RegisterStartupScript("confirm",ConfirmContent);
//Response.Write(strScript);