0. 세션을 이용하여 로그인 여부를 결정합니다.
if(세션["로그인"] == null)
{
Response.Redirect("error.aspx");
}
1. 새 창을 열고 매개변수를 전송합니다.
전송 매개변수:
response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>")
매개변수 수신:
string a = Request.QueryString("id");
string b = Request.QueryString("id1");
2. 버튼에 대화 상자를 추가합니다.
Button1.Attributes.Add("onclick","return verify('확인?')");
Button.attributes.add("onclick","if(confirm('확실합니까...?')){return true;}else{return false;}")
3. 테이블에서 선택한 레코드를 삭제합니다.
int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];
string 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];
링크버튼 myDeleteButton;
myDeleteButton = (LinkButton)myTableCell.Controls[0];
myDeleteButton.Attributes.Add("onclick","return verify('이 메시지를 삭제하시겠습니까?');");
부서지다;
기본:
부서지다;
}
}
5. 다른 페이지로 연결하려면 표 행을 클릭하세요.
개인 무효 grdCustomer_ItemDataBound(개체 전송자, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
//폼을 클릭하여 엽니다.
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 + "');");
}
itemDataBind 이벤트의 다른 페이지에 연결하려면 테이블을 두 번 클릭하세요.
if(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 + "'");
}
테이블을 두 번 클릭하여 새 페이지를 엽니다.
if(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 번호" DataTextField="id" NavigateUrl="aaa.aspx?id='<%# DataBinder.Eval(Container.DataItem, "데이터 필드 1")%>' & name='<%# DataBinder.Eval(Container.DataItem, "Data Field 2")%>' />
7. 색상을 변경하려면 표를 클릭하세요.
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';");
}
DataGrid의 _ItemDataBound에 작성됨
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. 날짜 형식에 대하여
날짜 형식 설정
DataFormatString="{0:yyyy-MM-dd}"
아이템바운드 이벤트에 있어야 할 것 같아요
e.items.cell["귀하의 열"].text=DateTime.Parse(e.items.cell["귀하의 열"].text.ToString("yyyy-MM-dd"))
9. 오류 정보를 얻고 지정된 페이지로 이동하려면 Response.Redirect를 사용하지 않고 Server.Transfer를 사용하십시오.
예를 들어
// global.asax에서
protected void Application_Error(객체 전송자, EventArgs e) {
if (Server.GetLastError()는 HttpUnhandledException입니다)
Server.Transfer("MyErrorPage.aspx");
//HttpUnhandledException이 아닌 나머지 예외는 ASP.NET 자체에 남겨두어도 괜찮습니다. :)
}
리디렉션을 하면 포스트백이 생성되고 오류 정보가 손실되므로 페이지 안내를 서버 측에서 직접 실행해야 오류 처리 페이지에서 오류 정보를 얻어 그에 따라 처리할 수 있습니다.
10.쿠키 삭제
쿠키.만료=[날짜시간];
Response.Cookies("UserName").Expires = 0
11. 사용자 정의 예외 처리
//사용자 정의 예외 처리 클래스
시스템 사용;
System.Diagnostics 사용;
네임스페이스 MyAppException
{
/// <요약>
/// 시스템 예외 클래스 ApplicationException에서 상속된 응용 프로그램 예외 처리 클래스입니다.
/// Windows NT/2000의 응용 프로그램 로그에 예외 내용을 자동으로 기록합니다.
/// </summary>
공용 클래스 AppException:System.ApplicationException
{
publicAppException()
{
if(ApplicationConfiguration.EventLogEnabled)
LogEvent("알 수 없는 오류가 발생했습니다.");
}
publicAppException(문자열 메시지)
{
LogEvent(메시지);
}
공용 AppException(문자열 메시지,예외 innerException)
{
LogEvent(메시지);
if (innerException != null)
{
LogEvent(innerException.Message);
}
}
//로깅 클래스
시스템 사용;
System.Configuration 사용;
System.Diagnostics 사용;
System.IO 사용;
System.Text 사용;
System.Threading 사용;
네임스페이스 MyEventLog
{
/// <요약>
/// 이벤트 로깅 클래스, 이벤트 로깅 지원 제공
/// <비고>
/// 4가지 로깅 방법 정의(오류, 경고, 정보, 추적)
/// </비고>
/// </summary>
공개 클래스 ApplicationLog
{
/// <요약>
/// Win2000/NT 이벤트 로그에 오류 정보 기록
/// <param name="message">기록할 텍스트 정보</param>
/// </summary>
공개 정적 무효 WriteError(문자열 메시지)
{
WriteLog(TraceLevel.Error, 메시지);
}
/// <요약>
/// Win2000/NT 이벤트 로그에 경고 정보 기록
/// <param name="message">기록할 텍스트 정보</param>
/// </summary>
공개 정적 무효 WriteWarning(문자열 메시지)
{
WriteLog(TraceLevel.Warning, 메시지);
}
/// <요약>
/// Win2000/NT 이벤트 로그에 프롬프트 정보를 기록합니다.
/// <param name="message">기록할 텍스트 정보</param>
/// </summary>
공개 정적 무효 WriteInfo(문자열 메시지)
{
WriteLog(TraceLevel.Info, 메시지);
}
/// <요약>
/// Win2000/NT 이벤트 로그에 추적 정보 기록
/// <param name="message">기록할 텍스트 정보</param>
/// </summary>
공개 정적 무효 WriteTrace(문자열 메시지)
{
WriteLog(TraceLevel.Verbose, 메시지);
}
/// <요약>
/// 이벤트 로그에 기록되는 텍스트 정보 형식을 포맷합니다.
/// <param name="ex">포맷이 필요한 예외 객체</param>
/// <param name="catchInfo">예외 정보 제목 문자열.</param>
/// <재값>
/// <para>예외 내용 및 추적 스택을 포함하는 형식화된 예외 정보 문자열</para>
/// </retvalue>
/// </summary>
public static String FormatException(Exception ex, String catchInfo)
{
StringBuilder strBuilder = 새로운 StringBuilder();
if (catchInfo != 문자열.비어 있음)
{
strBuilder.Append(catchInfo).Append("rn");
}
strBuilder.Append(ex.Message).Append("rn").Append(ex.StackTrace);
strBuilder.ToString()을 반환합니다.
}
/// <요약>
/// 실제 이벤트 로그 작성 방법
/// <param name="level">기록할 정보 수준(오류, 경고, 정보, 추적)</param>
/// <param name="messageText">녹화할 텍스트입니다.</param>
/// </summary>
개인 정적 무효 WriteLog(TraceLevel 레벨, 문자열 messageText)
{
노력하다
{
EventLogEntryType LogEntryType;
스위치(레벨)
{
TraceLevel.Error:
LogEntryType = EventLogEntryType.Error;
부서지다;
TraceLevel.Warning:
LogEntryType = EventLogEntryType.Warning;
부서지다;
TraceLevel.Info:
LogEntryType = EventLogEntryType.Information;
부서지다;
TraceLevel.Verbose:
LogEntryType = EventLogEntryType.SuccessAudit;
부서지다;
기본:
LogEntryType = EventLogEntryType.SuccessAudit;
부서지다;
}
EventLog eventLog = new EventLog("Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName );
//이벤트 로그 쓰기
eventLog.WriteEntry(messageText, LogEntryType);
}
catch {} //예외를 무시합니다.
}
} //ApplicationLog 클래스
}
12.패널이 가로로 스크롤되고 자동으로 세로로 확장됩니다.
<asp:panel style="overflow-x:scroll;overflow-y:auto;"></asp:panel>
13. Enter를 Tab으로 변환
<script 언어="javascript" for="document" event="onkeydown">
if(event.keyCode==13 && event.srcElement.type!='버튼' && event.srcElement.type!='제출' && event.srcElement.type!='재설정' && event.srcElement.type!=' '&& event.srcElement.type!='textarea');
event.keyCode=9;
</script>
onkeydown="if(event.keyCode==13) event.keyCode=9"
14.DataGrid 슈퍼 연결 열
DataNavigateUrlField="필드 이름" DataNavigateUrlFormatString="}"
15.DataGrid 행은 마우스로 색상을 변경합니다.
개인 무효 DGzf_ItemDataBound(개체 전송자, 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. 템플릿 열
<ASP:TEMPLATECOLUMN visible="False" sortexpression="demo" headertext="ID">
<항목 템플릿>
<ASP:LABEL text='<%# DataBinder.Eval(Container.DataItem, "ArticleID")%>' runat="server" width="80%" id="lblColumn" />
</ITEMTEMPLATE>
</ASP:TEMPLATECOLUMN>
<ASP:TEMPLATECOLUMN 헤더텍스트="확인">
<HEADERSTYLE Wrap="False"horizontalalign="가운데"></HEADERSTYLE>
<항목 템플릿>
<ASP:CHECKBOX id="chkExport" runat="서버" />
</ITEMTEMPLATE>
<편집 항목 템플릿>
<ASP:CHECKBOX id="chkExportON" runat="server" 활성화="true" />
</EDITITEMTEMPLATE>
</ASP:TEMPLATECOLUMN>
코드 비하인드
protected void CheckAll_CheckedChanged(개체 전송자, System.EventArgs e)
{
//열 선택을 모두 선택하거나 선택하지 않도록 변경합니다.
CheckBox chkExport;
if(CheckAll.Checked)
{
foreach(DataGridItem oDataGridItem in MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked = true;
}
}
또 다른
{
foreach(DataGridItem oDataGridItem in MyDataGrid.Items)
{
chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
chkExport.Checked = 거짓;
}
}
}
17. 숫자 서식 [<%#Container.DataItem("price")%>의 결과가 500.0000인데 어떻게 500.00으로 서식을 지정하나요?]
<%#Container.DataItem("가격","{0:₩#,##0.00}")%>
int i=123456;
string s=i.ToString("###,###.00");
18.날짜 형식
[aspx 페이지에서: <%# DataBinder.Eval(Container.DataItem, "Company_Ureg_Date")%>
다음과 같이 표시됨: 2004-8-11 19:44:28
내가 원하는 것은: 2004-8-11]
<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-Md}")%>
어떻게 바뀌어야 할까요?
[형식 날짜]
꺼내세요 보통 반대합니다
((DateTime)objectFromDB).ToString("yyyy-MM-dd");
[날짜에 대한 유효성 검사 표현]
A. 다음의 올바른 입력 형식: [2004-2-29], [2004-02-29 10: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. 다음의 올바른 입력 형식: [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. 전역변수 설정방법
글로벌.asax
Application_Start() 이벤트에서
애플리케이션 추가[속성 이름] = xxx;
그것은 당신의 전역 변수입니다
20. HyperLinkColumn에서 생성된 연결을 클릭한 후 새 창을 열려면 어떻게 해야 합니까?
HyperLinkColumn에는 Target 속성이 있으므로 값을 "_blank"(Target="_blank")로 설정하면 됩니다.
[ASPNETMENU] 메뉴 항목을 클릭하여 새 창을 엽니다. menuData.xml 파일의 메뉴 항목에 URLTarget="_blank"를 추가합니다.
좋다:
<?xml version="1.0" 인코딩="GB2312"?>
<MenuData ImagesBaseURL="이미지/">
<메뉴그룹>
<MenuItem Label="내부 매개변수 정보" URL="Infomation.aspx" >
<메뉴그룹 ID="BBC">
<MenuItem Label="공지사항" URL="Infomation.aspx" URLTarget="_blank" LeftIcon="file.gif"/>
<MenuItem Label="정보 브리핑 준비" URL="NewInfo.aspx" LeftIcon="file.gif" />
...
aspnetmenu를 버전 1.2로 업그레이드하는 것이 가장 좋습니다.
21. 커미션 논의
22. DataGrid 컨트롤 TextBox 값을 읽습니다.
foreach(yourDataGrid.Items의 DataGrid dgi)
{
TextBox tb = (TextBox)dgi.FindControl("yourTextBoxId");
tb.텍스트....
}
23. DataGrid에는 텍스트 상자가 포함된 세 개의 템플릿 열이 있습니다: DG_ShuLiang(수량), DG_DanJian(단가) 및 DG_JinE(금액). 이는 5.6.7 열에 입력할 때 금액을 자동으로 계산하는 데 필요합니다. 수량 및 단가, 즉 수량 * 단가 = 금액도 입력 시 숫자 값으로 제한되어야 합니다. 이 기능을 구현하려면 클라이언트 스크립트를 어떻게 사용해야 합니까?
〖복귀를 생각 중〗
<asp:TemplateColumn HeaderText="수량">
<항목 템플릿>
<asp:TextBox id="ShuLiang" runat='서버' Text='<%# DataBinder.Eval(Container.DataItem,"DG_ShuLiang")%>'
onkeyup="javascript:DoCal()"
/>
<asp:RegularExpressionValidator id="revS" runat="server" ControlToValidate="ShuLiang" ErrorMessage="정수여야 합니다" ValidationExpression="^d+$" />
</ItemTemplate>
</asp:템플릿열>
<asp:TemplateColumn HeaderText="단가">
<항목 템플릿>
<asp:TextBox id="DanJian" runat='서버' Text='<%# DataBinder.Eval(Container.DataItem,"DG_DanJian")%>'
onkeyup="javascript:DoCal()"
/>
<asp:RegularExpressionValidator id="revS2" runat="server" ControlToValidate="DanJian" ErrorMessage="숫자여야 합니다" ValidationExpression="^d+(.d*)?$" />
</ItemTemplate>
</asp:템플릿열>
<asp:TemplateColumn HeaderText="금액">
<항목 템플릿>
<asp:TextBox id="JinE" runat='server' Text='<%# DataBinder.Eval(Container.DataItem,"DG_JinE")%>' />
</ItemTemplate>
</asp:템플릿열>
<스크립트 언어="자바스크립트">
함수DoCal()
{
var e = event.srcElement;
var 행 = e.parentNode.parentNode;
var txts = row.all.tags("INPUT");
if (!txts.length || txts.length < 3)
반품;
var q = txts[txts.length-3].value;
var p = txts[txts.length-2].value;
if (isNaN(q) || isNaN(p))
반품;
q = parsInt(q);
p=parseFloat(p);
txts[txts.length-1].value = (q * p).toFixed(2);
}
</script>
24.데이터그리드 하단의 행을 비교 대상으로 선택하면 왜 항상 새로고침을 한 후 위로 스크롤을 하게 됩니까? 화면 때문에 방금 선택한 행이 보이지 않습니다.
페이지_로드
page.smartNavigation=true
25. Datagrid에서 데이터를 수정할 때 편집 키를 누르면 텍스트 상자에 데이터가 나타납니다. 텍스트 상자의 크기를 조절하는 방법은 무엇입니까?
개인 무효 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("너비", "80px")
}
}
26. 대화 상자
개인 정적 문자열 ScriptBegin = "<script 언어="JavaScript">";
개인 정적 문자열 ScriptEnd = "</script>";
공개 정적 무효 확인 메시지 상자(문자열 PageTarget,문자열 콘텐츠)
{
stringContent="var retvalue="/blog/window.confirm('"+Content+"');"+"if(retValue){window.location="'"+PageTarget+"';}";
ContinueContent=ScriptBegin + ContinueContent + ScriptEnd;
페이지 ParameterPage = (페이지)System.Web.HttpContext.Current.Handler;
ParameterPage.RegisterStartupScript("confirm",ConfirmContent);
//Response.Write(strScript);