0. Utilisez la session pour déterminer si vous devez vous connecter
if(Session["login"] == null)
{
Réponse.Redirect("erreur.aspx");
}
1. Ouvrez une nouvelle fenêtre et transférez les paramètres :
Paramètres de transmission :
réponse.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>")
Paramètres de réception :
chaîne a = Request.QueryString("id");
chaîne b = Request.QueryString("id1");
2. Ajoutez une boîte de dialogue au bouton
Button1.Attributes.Add("onclick","return confirm('Confirm?')");
button.attributes.add("onclick","if(confirm('êtes-vous sûr...?')){return true;}else{return false;}")
3. Supprimer les enregistrements sélectionnés dans le tableau
int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];
string deleteCmd = "DELETE from Employee où emp_id = " + intEmpID.ToString()
4. Supprimer l'avertissement d'enregistrement du formulaire
private void DataGrid_ItemCreated (expéditeur d'objet, DataGridItemEventArgs e)
{
commutateur (e.Item.ItemType)
{
cas ListItemType.Item :
cas ListItemType.AlternatingItem :
cas ListItemType.EditItem :
TableCell maTableCell ;
maTableCell = e.Item.Cells[14];
LinkButton monDeleteButton ;
monDeleteButton = (LinkButton)myTableCell.Controls[0];
myDeleteButton.Attributes.Add("onclick","return confirm('Êtes-vous sûr de vouloir supprimer ce message');");
casser;
défaut:
casser;
}
}
5. Cliquez sur une ligne du tableau pour créer un lien vers une autre page
private void grdCustomer_ItemDataBound (expéditeur d'objet, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
//Cliquez sur le formulaire pour l'ouvrir
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 + "');");
}
Double-cliquez sur le tableau pour vous connecter à une autre page dans l'événement itemDataBind
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
chaîne OrderItemID =e.item.cells[1].Text;
...
e.item.Attributes.Add("ondblclick", "location.href='../ShippedGrid.aspx?id=" + OrderItemID + "'");
}
Double-cliquez sur le tableau pour ouvrir une nouvelle page
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
chaîne OrderItemID =e.item.cells[1].Text;
...
e.item.Attributes.Add("ondblclick", "open('../ShippedGrid.aspx?id=" + OrderItemID + "')");
}
★Remarque : [?id=] ne peut pas être [?id =]
6. Transmettez les paramètres dans les colonnes de lien hypertexte du tableau
<asp:HyperLinkColumn Target="_blank" headertext="numéro d'identification" DataTextField="id" NavigateUrl="aaa.aspx?id='<%# DataBinder.Eval(Container.DataItem, "Data Field 1")%>' & name='<%# DataBinder.Eval(Container.DataItem, "Data Field 2")%>' />
7. Cliquez sur le tableau pour changer la couleur
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';");
}
Écrit dans _ItemDataBound de 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. À propos du format de date
Paramétrage du format de date
DataFormatString="{0:aaaa-MM-jj}"
Je pense que cela devrait être dans l'événement lié à l'élément
e.items.cell["votre colonne"].text=DateTime.Parse(e.items.cell["votre colonne"].text.ToString("aaaa-MM-jj"))
9. Pour obtenir des informations sur l'erreur et accéder à la page spécifiée, n'utilisez pas Response.Redirect, mais utilisez Server.Transfer.
par ex.
// dans global.asax
protected void Application_Error (expéditeur d'objet, EventArgs e) {
si (Server.GetLastError() est HttpUnhandledException)
Serveur.Transfer("MaPageErreur.aspx");
// Vous pouvez laisser le reste des exceptions non-HttpUnhandledException à ASP.NET lui-même :)
}
La redirection entraînera la génération d'un post-back et la perte des informations sur les erreurs. Les instructions de page doivent donc être exécutées directement côté serveur, afin que les informations sur les erreurs puissent être obtenues sur la page de gestion des erreurs et traitées en conséquence.
10.Effacer les cookies
Cookie.Expires=[DateTime];
Réponse.Cookies("NomUtilisateur").Expires = 0
11. Gestion des exceptions personnalisées
//Classe de gestion des exceptions personnalisée
utiliser le système ;
en utilisant System.Diagnostics ;
espace de noms MyAppException
{
/// <résumé>
/// Classe de gestion des exceptions d'application héritée de la classe d'exceptions système ApplicationException.
/// Enregistre automatiquement le contenu des exceptions dans le journal des applications de Windows NT/2000
/// </summary>
classe publique AppException : System.ApplicationException
{
publicAppException()
{
si (ApplicationConfiguration.EventLogEnabled)
LogEvent("Une erreur inconnue s'est produite.");
}
publicAppException (message de chaîne)
{
LogEvent(message);
}
public AppException (message de chaîne, exception innerException)
{
LogEvent(message);
si (innerException ! = null)
{
LogEvent(innerException.Message);
}
}
//Classe de journalisation
utiliser le système ;
en utilisant System.Configuration ;
en utilisant System.Diagnostics ;
en utilisant System.IO ;
en utilisant System.Text ;
en utilisant System.Threading ;
espace de noms MyEventLog
{
/// <résumé>
/// Classe de journalisation des événements, fournissant la prise en charge de la journalisation des événements
/// <remarques>
/// Définit 4 méthodes de journalisation (erreur, avertissement, info, trace)
/// </remarques>
/// </summary>
Classe publique ApplicationLog
{
/// <résumé>
/// Enregistrer les informations d'erreur dans le journal des événements Win2000/NT
/// <param name="message">Informations textuelles à enregistrer</param>
/// </summary>
public static void WriteError (message de chaîne)
{
WriteLog(TraceLevel.Error, message);
}
/// <résumé>
/// Enregistrer les informations d'avertissement dans le journal des événements Win2000/NT
/// <param name="message">Informations textuelles à enregistrer</param>
/// </summary>
public static void WriteWarning (message de chaîne)
{
WriteLog(TraceLevel.Warning, message);
}
/// <résumé>
/// Enregistrez les informations d'invite dans le journal des événements Win2000/NT
/// <param name="message">Informations textuelles à enregistrer</param>
/// </summary>
public static void WriteInfo (message de chaîne)
{
WriteLog(TraceLevel.Info, message);
}
/// <résumé>
/// Enregistrer les informations de traçage dans le journal des événements Win2000/NT
/// <param name="message">Informations textuelles à enregistrer</param>
/// </summary>
public static void WriteTrace (message de chaîne)
{
WriteLog(TraceLevel.Verbose, message);
}
/// <résumé>
/// Formater le format des informations textuelles enregistrées dans le journal des événements
/// <param name="ex">Objet d'exception qui doit être formaté</param>
/// <param name="catchInfo">Chaîne de titre des informations sur l'exception.</param>
/// <retvalue>
/// <para>Chaîne d'informations sur les exceptions formatée, y compris le contenu des exceptions et la pile de trace.</para>
/// </retvalue>
/// </summary>
public static String FormatException (Exception 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();
}
/// <résumé>
/// Méthode d'écriture du journal des événements réels
/// <param name="level">Le niveau d'information à enregistrer (erreur, avertissement, info, trace).</param>
/// <param name="messageText">Texte à enregistrer.</param>
/// </summary>
vide statique privé WriteLog (niveau TraceLevel, chaîne messageText)
{
essayer
{
EventLogEntryType LogEntryType ;
interrupteur (niveau)
{
cas TraceLevel.Erreur :
LogEntryType = EventLogEntryType.Error ;
casser;
cas TraceLevel.Avertissement :
LogEntryType = EventLogEntryType.Warning ;
casser;
cas TraceLevel.Info :
LogEntryType = EventLogEntryType.Information ;
casser;
cas TraceLevel.Verbose :
LogEntryType = EventLogEntryType.SuccessAudit ;
casser;
défaut:
LogEntryType = EventLogEntryType.SuccessAudit ;
casser;
}
EventLog eventLog = new EventLog("Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName );
// écriture du journal des événements
eventLog.WriteEntry(messageText, LogEntryType);
}
catch {} //Ignorer toutes les exceptions
}
} //classeApplicationLog
}
12.Le panneau défile horizontalement et s'agrandit automatiquement verticalement
<asp:panel style="overflow-x:scroll;overflow-y:auto;"></asp:panel>
13. Convertir Entrée en Tab
<script langage="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. Colonne de super connexion DataGrid
DataNavigateUrlField="Nom du champ" DataNavigateUrlFormatString="}"
15.Les lignes DataGrid changent de couleur avec la souris
private void DGzf_ItemDataBound (expéditeur d'objet, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
si (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. Colonne Modèle
<ASP:TEMPLATECOLUMN visible="False" sortexpression="demo" headertext="ID">
<MODÈLE D'ÉLÉMENT>
<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="Centre"></HEADERSTYLE>
<MODÈLE D'ÉLÉMENT>
<ASP:CHECKBOX id="chkExport" runat="server" />
</ITEMTEMPLATE>
<MODÈLED'ÉDITION>
<ASP:CHECKBOX id="chkExportON" runat="server" activé="true" />
</EDITITEMTEMPLATE>
</ASP:TEMPLATECOLUMN>
code derrière
protected void CheckAll_CheckedChanged (expéditeur de l'objet, System.EventArgs e)
{
//Modifiez la sélection des colonnes pour sélectionner tout ou rien.
CheckBox chkExport;
si (CheckAll.Checked)
{
foreach (DataGridItem oDataGridItem dans MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked = true ;
}
}
autre
{
foreach (DataGridItem oDataGridItem dans MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked = faux ;
}
}
}
17. Formatage des nombres [Le résultat de <%#Container.DataItem("price")%> est 500,0000, comment le formater en 500,00 ?]
<%#Container.DataItem("price","{0:¥#,##0.00}")%>
int je = 123456 ;
string s=i.ToString("###,###.00");
18.Formatage de la date
[Dans la page aspx : <%# DataBinder.Eval(Container.DataItem, "Company_Ureg_Date")%>
Affiché comme : 2004-8-11 19:44:28
Je veux juste : 2004-8-11】
<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-Md}")%>
Comment faut-il le changer ?
[Formater la date]
Retirez-le, objectez généralement
((DateTime)objectFromDB).ToString("aaaa-MM-jj");
[Expression de validation pour la date]
A. Le format d'entrée correct suivant : [2004-2-29], [2004-02-29 22:29:39 pm], [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))([AM|PM|am|pm]{2,2})))?$
B. Le format de saisie correct suivant : [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]))$
[Conversion de cas]
HttpUtility.HtmlEncode(string);
HttpUtility.HtmlDecode(chaîne)
19. Comment définir des variables globales
Global.asax
Dans l'événement Application_Start()
Ajouter une application[nom de la propriété] = xxx ;
C'est votre variable globale
20. Comment ouvrir une nouvelle fenêtre après avoir cliqué sur la connexion générée par HyperLinkColumn ?
HyperLinkColumn a un attribut Target, définissez simplement la valeur sur "_blank" (Target="_blank").
[ASPNETMENU] Cliquez sur l'élément de menu pour faire apparaître une nouvelle fenêtre. Ajoutez URLTarget="_blank" à l'élément de menu dans votre fichier menuData.xml.
comme:
<?xml version="1.0" encoding="GB2312"?>
<MenuData ImagesBaseURL="images/">
<GroupeMenu>
<MenuItem Label="Informations sur les paramètres internes" URL="Infomation.aspx" >
<ID du groupe de menu="BBC">
<MenuItem Label="Informations sur l'annonce" URL="Infomation.aspx" URLTarget="_blank" LeftIcon="file.gif"/>
<MenuItem Label="Préparer la réunion d'information" URL="NewInfo.aspx" LeftIcon="file.gif" />
...
Il est préférable de mettre à niveau votre menu aspnet vers la version 1.2
21. Discussion de la Commission
22. Lisez la valeur TextBox du contrôle DataGrid
foreach (DataGrid dgi dans yourDataGrid.Items)
{
TextBox tb = (TextBox)dgi.FindControl("yourTextBoxId");
to.Texte....
}
23. Il y a trois colonnes de modèle dans le DataGrid qui contiennent des zones de texte : DG_ShuLiang (quantité), DG_DanJian (prix unitaire) et DG_JinE (montant). Elles se trouvent dans la colonne 5.6.7. Il est nécessaire de calculer automatiquement le montant lors de la saisie du montant. quantité et prix unitaire, c'est-à-dire : quantité * prix unitaire = Le montant doit également être limité aux valeurs numériques lors de la saisie. Comment puis-je utiliser le script client pour implémenter cette fonction ?
〖Je pense revenir〗
<asp:TemplateColumn HeaderText="Quantité">
<Modèle d'élément>
<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="doit être un nombre entier" ValidationExpression="^d+$" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Prix unitaire">
<Modèle d'élément>
<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="doit être numérique" ValidationExpression="^d+(.d*)?$" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Montant">
<Modèle d'élément>
<asp:TextBox id="JinE" runat='server' Text='<%# DataBinder.Eval(Container.DataItem,"DG_JinE")%>' />
</ItemTemplate>
</asp:TemplateColumn>
<langage de script="javascript">
fonctionDoCal()
{
var e = event.srcElement;
var row = e.parentNode.parentNode;
var txts = row.all.tags("INPUT");
si (!txts.length || txts.length < 3)
retour;
var q = txts[txts.length-3].value;
var p = txts[txts.length-2].value;
si (estNaN(q) || estNaN(p))
retour;
q = parseInt(q);
p = parseFloat(p);
txts[txts.length-1].value = (q * p).toFixed(2);
}
</script>
24.Lorsque les lignes en bas de la grille de données sont sélectionnées pour comparaison, pourquoi s'actualise-t-elle toujours puis défile-t-elle vers le haut ? Les lignes qui viennent d'être sélectionnées ne sont pas visibles à cause de l'écran ?
chargement_page
page.smartNavigation=true
25. Lors de la modification de données dans Datagrid, lorsque vous cliquez sur la touche d'édition, les données apparaissent dans la zone de texte. Comment contrôler la taille de la zone de texte ?
private void DataGrid1_ItemDataBound (expéditeur obj, DataGridItemEventArgs e)
{
pour(int i=0;i<e.Item.Cells.Count-1;i++)
if(e.Item.ItemType==ListItemType.EditType)
{
e.Item.Cells.Attributes.Add("Largeur", "80px")
}
}
26. Boîte de dialogue
chaîne statique privée ScriptBegin = "<script language="JavaScript">";
chaîne statique privée ScriptEnd = "</script>";
public static void ConfirmMessageBox (chaîne PageTarget, chaîne Contenu)
{
string ConfirmContent="var retvalue="/blog/window.confirm('"+Content+"');"+"if(retValue){window.location="'"+PageTarget+"';}";
ConfirmContent=ScriptBegin + ConfirmContent + ScriptEnd ;
Paramètre de pagePage = (Page)System.Web.HttpContext.Current.Handler;
ParameterPage.RegisterStartupScript("confirm",ConfirmContent);
//Réponse.Write(strScript);