lecture Home > ASP.NET 2.0 > Taeyo.NET - ASP.NET 2.0

Taeyo.NET - ASP.NET 2.0

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2007³â 03¿ù 28ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2007³â 06¿ù 21ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

   ÀÛ¼ºÀÚ : kobukii(±è °æ±Õ)
   ÆíÁýÀÚ : Taeyo(±è Å¿µ)

   °­Á Á¦¸ñ : ASP.NET 2.0¿¡¼­ÀÇ Javascript

°­Á Àü Å¿ÀÀÇ Àâ´ã>

À̹ø °­Á´ Å¿À »çÀÌÆ®ÀÇ ¸â¹öÀÌÀÚ, 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À» ¸¸µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

  1. À¥ ÄÁÆ®·Ñ ¶óÀ̺귯¸® ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÕ´Ï´Ù.
  2. °£´ÜÇÑ javascriptÆÄÀÏÀ» ¸¸µì´Ï´Ù. ½ºÅ©¸³Æ® ³»ºÎ¿¡´Â Msg()¶ó´Â °æ°í âÀ» º¸¿©ÁÖ´Â functionÀÌ ÀÖ½À´Ï´Ù.
  3. javascriptÆÄÀÏÀ» Æ÷ÇÔ¸®¼Ò½º·Î ¸¸µì´Ï´Ù.
  4. ±âº»À¸·Î »ý¼ºµÈ WebCustomControl1.csÆÄÀÏÀÌ System.Web.UI.WebControls.TextBox¸¦ »ó¼Ó ¹Þµµ·Ï ÇÕ´Ï´Ù.
  5. overrideµÈ Render¸Å¼­µå¿¡ Msg() functionÀ» È£ÃâÇÒ onClick À̺¥Æ®¸¦ Ãß°¡ÇÕ´Ï´Ù.
  6. 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"));
    }
}
  1. Properties½Ã½ºÅÛ Æú´õ ¾ÈÀÇ AssemblyInfo.csÆÄÀÏ¿¡ ¾Æ·¡¿Í °°ÀÌ WebResourde¸¦ µî·ÏÇϱâ À§ÇÑ Äڵ带 »ðÀÔÇÕ´Ï´Ù.
  2. ÇÁ·ÎÁ§Æ®¸¦ ºôµå Çϸé 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¿¡ ´ëÇØ ÁøÇàÇϵµ·Ï ÇϰڽÀ´Ï´Ù. ÀÌ ±ÛÀ» ÀÐÀ¸½Ã´Â ºÐµé²² ¾à°£ÀÇ µµ¿òÀÌ¶óµµ µÆÀ¸¸é ÁÁ°Ú½À´Ï´Ù. ±×·³ ´ÙÀ½°­Á¿¡¼­ ºË°Ú½À´Ï´Ù.

 

°­Á ¸ñ·ÏÀ¸·Î..