|
°Á Àü Å¿ÀÀÇ Àâ´ã>
À̹ø °Á´ Å¿À »çÀÌÆ®ÀÇ ¸â¹öÀÌÀÚ, Microsoft MVPÀÎ ±è °æ±Õ´ÔÀÌ Á¦°øÇÏ´Â
ASP.NET 2.0¿¡¼ Javascript¸¦ ´Ù·ç´Â À̾߱âÀÔ´Ï´Ù. ¾Ë¾ÆµÎ¸é »ó´çÈ÷ À¯¿ëÇÑ ³»¿ëÀÌ´Ï ¸¹Àº °ü½É ºÎʵå·Á º¸¾Æ¿°
(¹Ú¼ö 4¹ø) ¦¦¦¦
ASP.NET 2.0¿¡¼ÀÇ Javascript
ASP.NET2.0¿¡¼´Â Javascript¸¦ ´Ù·ç±â À§ÇØ ASP.NET1.1¶§ º¸´Ù ¸¹Àº ±â´ÉÀ» Á¦°øÇϰí ÀÖ½À´Ï´Ù. JavascriptÀÇ Ã³¸® ¹æ¹ýÀÌ ÀÌÀü ¹öÀü º¸´Ù °³¼± µÇ¾úÀ¸¸ç º¸´Ù ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù..
1. Focus
ÆäÀÌÁö ·Îµå ½Ã À¥ ÆäÀÌÁöÀÇ Æ¯Á¤ ÄÁÆ®·Ñ¿¡ Æ÷Ä¿½º¸¦ ÁöÁ¤ÇØ ÁÖ±â À§ÇØ ±âÁ¸¿¡´Â Æ÷Ä¿½º¸¦ ÁöÁ¤ÇÏ´Â ½ºÅ©¸³Æ®¸¦ ¹®ÀÚ¿·Î ¸¸µé¾î ³õ°í ÆäÀÌÁö°¡ ·Îµå µÉ ¶§ ÀÌ ¹®ÀÚ¿À» Ãâ·ÂÇϵµ·Ï ó¸® Çϰųª, aspxÆÄÀÏ¿¡ Á÷Á¢ Javascript¸¦ ±¸ÇöÇϰí bodyÀÇ onLoadÀ̺¥Æ®¿¡¼
À̸¦ È£Ãâ ÇÏ¿´½À´Ï´Ù.
void Page_Load(object sender, EventArgs e)
{
SetFocus("textBox1");
}
void SetFocus(String ctrlID
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script>");
sb.Append("document.getElementById('" + ctrlID + "').focus();");
sb.Append("</script>");
Page.RegisterStartupScript("FocusScript", sb.ToString());
}
ASP.NET2.0¿¡¼´Â À§¿Í °°ÀÌ ¸¹Àº Äڵ带 ´Ü ÇÑ ÁÙ ¶Ç´Â ÇϳªÀÇ ¼Ó¼º ¸¸À¸·Î ÇØ°á ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù. Page°³Ã¼ÀÇ SetFocus¸Å¼µå ¶Ç´Â Æ÷Ä¿½º¸¦ ÁöÁ¤ÇÒ ÄÁÆ®·ÑÀÇ Focus¸Å¼µå¸¦ ÅëÇÏ¿© °£´ÜÈ÷ ÇØ´çÇÏ´Â ÄÁÆ®·Ñ¿¡ Æ÷Ä¿½º¸¦ ÁöÁ¤ ÇØ ÁÙ ¼ö ÀÖ½À´Ï´Ù.
void Page_Load(object sender, EventArgs e)
{
Page.SetFocus("textBox1");
//¶Ç´Â
textBox1.Focus();
}
ÀÌ º¸´Ù ´õ °£´ÜÇÑ ¹æ¹ýµµ ÀÖ½À´Ï´Ù. aspxÆÄÀÏ ³»ÀÇ formű׿¡ defaultfocus¶ó´Â ¼Ó¼ºÀÌ Àִµ¥ ÀÌ ¼Ó¼º¿¡ ÇØ´ç ÄÁÆ®·ÑÀÇ id¸¸ ÀÔ·ÂÇϸé ÇØ´ç ÄÁÆ®·Ñ¿¡ Æ÷Ä¿½º°¡ ÁöÁ¤µË´Ï´Ù.
<form defaultfocus="textBox1" id="form2" runat="server">
<asp:TextBox ID="textBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="textBox2" runat="server"></asp:TextBox>
</form>
»ó´çÈ÷ °£´ÜÇÑ ±â´ÉÀÌÁö¸¸ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ±â´ÉÀÔ´Ï´Ù. ÀÌ °£´ÜÇÑ Æ÷Ä¿½ºÁöÁ¤À̶ó´Â ±â´ÉÀ» »ç¿ëÇϱâ À§ÇØ ±âÁ¸¿¡´Â ù ¹øÂ° ¿¹Á¦¿Í °°ÀÌ ¸¹Àº ¾çÀÇ Äڵ带 ÀÛ¼º ÇϼÌÀ» °ÍÀÔ´Ï´Ù.
2. onClick
´ÙÀ½Àº »ó´çÈ÷ ºó¹øÇÏ°Ô »ç¿ëµÇ´Â onClickÀ̺¥Æ®¸¦ ASP.NET2.0¿¡¼ º¸´Ù ½±°Ô »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
1.1¹öÀü¿¡¼´Â ¹öưÄÁÆ®·Ñ¿¡ alertÀ̳ª confirmÀ» »ç¿ëÇϱâ À§ÇØ Attributes.Add¶ó´Â ¸Å¼µå¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù. »ç¿ëÇϱ⿡ ±×´ÙÁö ºÒÆíÇÏÁö´Â ¾ÊÁö¸¸ ÀÌ ¶ÇÇÑ 2.0¿¡¼´Â º¸´Ù °£°áÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
btn1.Attributes.Add("onclick", "alert('Ŭ¸¯Çß½À´Ï´Ù.')");
btn2.Attributes.Add("onclick", "return confirm('»èÁ¦ÇϽðڽÀ´Ï±î?')");
ASP.NET2.0¿¡¼´Â »õ·Î µîÀåÇÑ OnClientClickÀ̶ó´Â ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù. ASP.NET¿¡¼ OnClick¼Ó¼ºÀº ¼¹öÀÇ Å¬¸¯À̺¥Æ®¿¡ ´ëÇÑ ¼Ó¼ºÀÔ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®¿¡ ´ëÇÑ ¼Ó¼ºÀº Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®¿¡ ¾î¿ ¼ö ¾øÀÌ Attributes.Add¸¦ »ç¿ëÇÒ ¼ö ¹Û¿¡ ¾ø¾ú½À´Ï´Ù. ÇÏÁö¸¸ 2.0ºÎÅÍ Áö¿øÇÏ´Â OnClientClick¼Ó¼º¿¡ script ¶Ç´Â FunctionÀ» ³Ö¾î ÁÖ½Ã¸é ¼¹öÀ̺¥Æ®°¡ ÀϾ±â Àü¿¡ Ŭ¶óÀÌ¾ðÆ® À̺¥Æ®°¡ ¸ÕÀú ¹ß»ýÇÏ°Ô µË´Ï´Ù. »ó´çÈ÷ Á÷°üÀûÀÌ¸ç °£°áÇÏÁö ¾Ê½À´Ï±î?
<form id="form1" runat="server">
<asp:Button ID="btn1" runat="server" OnClientClick="alert('Ŭ¸¯Çß½À´Ï´Ù.')" />
<asp:Button ID="btn2" runat="server" OnClientClick="return confirm('»èÁ¦ÇϽðڽÀ´Ï±î?')" />
</form>
OnClientClick¼Ó¼ºÀ» ÁöÁ¤ÇÏ¿© ClientScript¸¦ ó¸® ÇÏ´Â °ÍÀº DataGrid³ª GridView¿Í °°Àº ÄÁÆ®·Ñ¿¡¼ º¸´Ù Æí¸®ÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ÀÇ Äڵ带 º¸½Ã¸é ÇØ´ç RowÀ» »èÁ¦Çϱâ Àü ConfrimâÀ» ¶ç¿ì±â À§ÇØ RowTypeÀÌ DataRowÀÎÁö¸¦ °Ë»çÇÏ°í ¹öưÄÁÆ®·ÑÀ» FindControl·Î ãÀº ´ÙÀ½ ±× ÄÁÆ®·Ñ¿¡ Attributes.Add¸¦ ÀÌ¿ëÇÏ¿© ½ºÅ©¸³Æ®¸¦ ÁöÁ¤ ÇØ ÁÖ°í ÀÖ½À´Ï´Ù. ¸¹ÀÌ »ç¿ëÇÏ´ø ÄÚµå¶ó ±×´ÙÁö ¾î·ÆÁö´Â ¾ÊÁö¸¸ ASP.NET2.0¿¡¼´Â »ó´çÈ÷ °£°áÇÏ°Ô À̺¥Æ® 󸮸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Button btn = (Button)e.Row.FindControl("BtnDel");
btn.Attributes.Add("onclick", "return confirm('ÀÌÀü¹öÀü:»èÁ¦ÇϽðڽÀ´Ï±î?')");
}
}
ÀϹÝÀûÀÎ GridViewÄÁÆ®·Ñ ³»ÀÇ ButtonÄÁÆ®·Ñ¿¡ OnClientClick¼Ó¼ºÀ» Ãß°¡ÇÏ´Â °Í ¸¸À¸·Îµµ À§ÀÇ ¸¹Àº Äڵ带 ´ëü ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Á¤¸» °£´ÜÇϰí À¯¿ëÇÑ ±â´ÉÀÌ ¾Æ´Ò ¼ö ¾ø½À´Ï´Ù.^^
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:BoundField DataField="IDX" HeaderText="IDX" ReadOnly="True" SortExpression="IDX" />
<asp:TemplateField HeaderText="»èÁ¦">
<ItemTemplate>
<asp:Button ID="btnDel" runat="server" CommandName="del" Text="»èÁ¦" OnClientClick="return confirm('»èÁ¦ÇϽðڽÀ´Ï±î?')" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
3. Æ÷½ºÆ®¹é ½Ã ½ºÅ©·Ñ ¹ÙÀÇ À§Ä¡ À¯Áö
´ÙÀ½Àº ½ºÅ©·Ñ ¹ÙÀÇ À§Ä¡¸¦ PostBack½Ã À¯ÁöÇÒ ¼ö ÀÖ°Ô ÇÏ´Â °·ÂÇÑ(?) ±â´ÉÀ» ¼Ò°³ÇϰڽÀ´Ï´Ù. MaintainScrollPositionOnPostback¼Ó¼ºÀ» true·Î ¼³Á¤ ÇØ ÁÖ¸é ³¡ÀÔ´Ï´Ù. Á¤¸» °£´ÜÇÕ´Ï´Ù. ÇÏÁö¸¸ 1.1¿¡¼ À̸¦ ±¸ÇöÇϱ⿡´Â ±×¸® ½±Áö´Â ¾Ê½À´Ï´Ù. ½¬¿î ºÐµéµµ °è½Ã°ÚÁö¸¸.. Àú´Â ¾î·Á¿ü½À´Ï´Ù. ¤Ñ.¤Ñ;;
<%@ Page Language="C#" ¡¦ MaintainScrollPositionOnPostback="true" %>
4. ¼¹öÃø¿¡¼ Ŭ¶óÀÌ¾ðÆ® ½ºÅ©¸³Æ®ÀÇ È£Ãâ ¹× µî·Ï
ºñÇÏÀεå Äڵ忡¼ ½ºÅ©¸³Æ®¸¦ È£ÃâÇϱâ À§ÇØ ÀÌÀü ¹öÀü¿¡¼´Â Page.Register...°ú °°ÀÌ »ç¿ëÇß¾ú½À´Ï´Ù.
ASP.NET2.0¿¡¼´Â ClientScriptManagerÀÇ ÀνºÅϽºÀÎ Page.ClientScript¶ó´Â °³Ã¼¸¦ »ç¿ëÇÕ´Ï´Ù.
protected void btn1_Click(object sender, EventArgs e)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script type='text/javascript'>alert('½ºÅ©¸³Æ® È£Ãâ');</script>");
Page.RegisterClientScriptBlock("alert", sb.ToString());
}
ClientScriptManager¿¡¼µµ RegisterClientScriptBlock, RegisterStartupScript´Â ±×´ë·Î »ç¿ë °¡´ÉÇÕ´Ï´Ù.
RegisterClientScriptBlock(Type type, string key, string script, , bool addScriptTags);
RegisterClientStartupScript(Type type, string key, string script, , bool addScriptTags);
´Þ¶óÁø Á¡Àº Ãß°¡µÈ ¸Å°³º¯¼öÀε¥, µî·ÏÇÒ Å¬¶óÀÌ¾ðÆ® ½ºÅ©¸³Æ®ÀÇ Çü½ÄÀ» ÁöÁ¤ÇÏ´Â type, "<script>...</script>"ű׸¦ Ãß°¡ÇÒÁö ¿©ºÎ¸¦ ¹¯´Â
addScriptTags°¡ ÀÖ½À´Ï´Ù. typeÀº ³»ºÎÀûÀ¸·Î key¿Í ÇÔ²² ½ºÅ©¸³Æ®¸¦
±¸ºÐ Áö¾îÁÖ´Â ScriptKey¿ªÇÒÀ» ÇÏ°Ô µË´Ï´Ù. ¿¹¸¦ µé¾î ¿¬¼ÓÇØ¼ µÎ ¹ø ½ºÅ©¸³Æ®¸¦ µî·Ï ÇÒ ¶§ type°ú
key°¡ µ¿ÀÏ ÇÒ °æ¿ì ¸ÕÀú µî·ÏµÈ ½ºÅ©¸³Æ® ¸¸ÀÌ ½ÇÇà µÇ°Ô µË´Ï´Ù. addScriptTags´Â ºñÇÏÀεå Äڵ尡 ¾Æ´Ñ aspxÆäÀÌÁö»ó¿¡ Äڵ带 Á÷Á¢ ÀÛ¼ºÇÒ °æ¿ì ¼¹ö ÄÚµå ¶ÇÇÑ
<script runat=server >ÅÂ±× ³»¿¡ ÀÛ¼ºÀÌ µÇ¹Ç·Î </script>Äڵ尡 ³ªÅ¸³ª¸é ¼¹öÄڵ尡 ³¡³ª°Ô µÇ´Â ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù. ±×·¸°Ô µÉ °æ¿ì </script>ÅÂ±× ÀÌÈÄÀÇ
¼¹ö ÄÚµåµéÀº ¼¹ö ÄÚµå·Î ÀνĵÇÁö ¸øÇϱ⠶§¹®¿¡ ¿À·ù°¡ ¹ß»ýÇÏ°Ô µË´Ï´Ù. À̶§ addScriptTags¸¦ true·Î ¼³Á¤ÇÏ¸é ¾Æ¹« ¹®Á¦ ¾øÀÌ </script>ű׸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
ClientScript.RegisterClientScriptBlock(this.GetType(),"alert", sb.ToString());
RegisterClientScriptInclude´Â ºñÇÏÀεå ÄÚµå »ó¿¡¼ <script src="./JScript.js" type="text/javascript"></script> Äڵ带 ÆäÀÌÁö¿¡ µî·Ï ½Ãų ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â ´ÙÀ½¿¡ ³ª¿Ã WebResource¸¦ »ç¿ëÇÒ °æ¿ì¿¡µµ À¯¿ëÇÕ´Ï´Ù.
ClientScript.RegisterClientScriptInclude("Msg","./JScript.js");
5. WebResource¿¡ Æ÷ÇÔµÈ ÀÚ¹Ù½ºÅ©¸³Æ®
À̹ø¿¡´Â WebResource¸¦ ÀÌ¿ëÇÏ¿© ½ºÅ©¸³Æ®¸¦ »ðÀÔÇϰí À̸¦ È£ÃâÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇϵµ·Ï ÇϰڽÀ´Ï´Ù.
¿ì¼± °£´ÜÈ÷ TextBox¸¦ »ó¼Ó¹Þ´Â Custom ControlÀ» ¸¸µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
- À¥ ÄÁÆ®·Ñ ¶óÀ̺귯¸® ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÕ´Ï´Ù.

- °£´ÜÇÑ javascriptÆÄÀÏÀ» ¸¸µì´Ï´Ù. ½ºÅ©¸³Æ® ³»ºÎ¿¡´Â Msg()¶ó´Â °æ°í âÀ» º¸¿©ÁÖ´Â functionÀÌ ÀÖ½À´Ï´Ù.
- javascriptÆÄÀÏÀ» Æ÷ÇÔ¸®¼Ò½º·Î ¸¸µì´Ï´Ù.

- ±âº»À¸·Î »ý¼ºµÈ WebCustomControl1.csÆÄÀÏÀÌ System.Web.UI.WebControls.TextBox¸¦ »ó¼Ó ¹Þµµ·Ï ÇÕ´Ï´Ù.
- overrideµÈ Render¸Å¼µå¿¡ Msg() functionÀ» È£ÃâÇÒ onClick À̺¥Æ®¸¦ Ãß°¡ÇÕ´Ï´Ù.
- WebResource·Î ¸¸µé¾îÁø javascripÆÄÀÏÀ» ClientScript.RegisterClientScriptInclude¸¦ ÀÌ¿ëÇÏ¿© Ãß°¡ÇÕ´Ï´Ù.
À̶§ WebResourceÀÇ °æ·Î¸¦ ¾Ë¾Æ¿À±â À§ÇØ ClientScript.GetWebResourceUrlÀ» »ç¿ëÇÕ´Ï´Ù.
[ToolboxData("<{0}:MyWebResource runat=server></{0}:MyWebResource>")]
public class WebCustomControl1: System.Web.UI.WebControls.TextBox
{
protected override void Render(HtmlTextWriter writer)
{
writer.AddAttribute("onclick", "Msg()");
base.Render(writer);
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
this.Page.ClientScript.RegisterClientScriptInclude("MSG",this.Page.ClientScript.GetWebResourceUrl(typeof(WebCustomControl1),"WebControlLibrary1.JScript.js"));
}
}
- Properties½Ã½ºÅÛ Æú´õ ¾ÈÀÇ AssemblyInfo.csÆÄÀÏ¿¡ ¾Æ·¡¿Í °°ÀÌ WebResourde¸¦ µî·ÏÇϱâ À§ÇÑ Äڵ带 »ðÀÔÇÕ´Ï´Ù.
- ÇÁ·ÎÁ§Æ®¸¦ ºôµå Çϸé Custom Control »ý¼ºÀÌ ¿Ï·áµË´Ï´Ù.
[assembly:WebResource(
"WebControlLibrary1.JScript.js",
"text/javascript")]
ÀÌÁ¦ À§¿¡¼ ¸¸µç Custom ControlÀ» ÆäÀÌÁö¿¡ ¿Ã·Á³õµµ·Ï ÇϰڽÀ´Ï´Ù. ±×¸®°í À̸¦ ½ÇÇàÇϰí ÅØ½ºÆ®¹Ú½º¸¦ Ŭ¸¯ÇÏ¸é ¸Þ¼¼Áö°¡ ¶ß´Â °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
<cc1:WebCustomControl1 ID="my" runat="server"></cc1:WebCustomControl1>

¿©±â¼ html¼Ò½ºº¸±â¸¦ ÇßÀ» °æ¿ì javascriptÆÄÀÏÀÌ WebResource.asd?......ó·³ Æ÷ÇÔµÇ¾î ½ÇÇàµÇ°í ÀÖ´Â °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù. WebResource´Â Javascript»Ó¸¸ ¾Æ´Ï¶ó Css, Imageµµ Æ÷ÇÔ ÇÒ ¼ö ÀÖÀ¸¸ç dll·Î ÄÄÆÄÀÏ µÇ±â ¶§¹®¿¡ º°µµÀÇ
ÆÄÀÏÀ» °°ÀÌ ¹èÆ÷ÇÒ Çʿ䰡 ¾ø´Ù´Â ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù.
<script src="/WebResource.axd?d=v_tffIY......3104528602185040" type="text/javascript"></script>
<input onclick="Msg()" name="my" type="text" id="my" />
Áö±Ý±îÁö ASP.NET2.0¿¡¼ Javascript¸¦ ÄÁÆ®·Ñ ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æ º¸¾Ò½À´Ï´Ù. À̹ø °Á¿¡ ÀÌ¾î ´ÙÀ½¿¡´Â Àå¾ÈÀÇ ÈÀçÀÎ Ajax¿Í °ü·ÃµÈ ASP.NET2.0¿¡¼ÀÇ Javascript¿¡ ´ëÇØ ÁøÇàÇϵµ·Ï ÇϰڽÀ´Ï´Ù.
ÀÌ ±ÛÀ» ÀÐÀ¸½Ã´Â ºÐµé²² ¾à°£ÀÇ µµ¿òÀÌ¶óµµ µÆÀ¸¸é ÁÁ°Ú½À´Ï´Ù. ±×·³ ´ÙÀ½°Á¿¡¼ ºË°Ú½À´Ï´Ù.
°Á ¸ñ·ÏÀ¸·Î..
|