정규식의 [ア-ン]의 경우
アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモラリルレロヤユヨン
ァィゥェォャュョ
ガギグゲゴ
ザジズゼゾ
ダヂヅデド
バビブベボ

RangeValidator의 minValue:ア maxValue:ン 의 경우
アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモラリルレロヤユヨン
ガギグゲゴ
ザジズゼゾ
ダヂヅデド
バビブベボ

약간의 차이가 생긴다..

고로..
내가 써야할것은
[アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモラリルレロヤユヨン]

그나저나 CustomValidator는 ClientScript로 먹어주려나 모르겠군..
AND

오피스 문서 처리

DEVELOP/XML 2008. 12. 14. 21:58

지난 금요일 VSUG의 첫번째 주제였던 VSTO 3.0에 관한 내용을 적어둔다.(까먹지말라고)

오피스 2007과 VS2008을 이어주는 녀석이 VSTO 3.0이다.

좀더 원활히 다루기위해 Open Xml Format SDK 1.0(2.0은 현재 CTP판)과 CodeSnippet

도 설치하자.

.netFramework 3.0이후로 오면서 좋아진점이.. Zip을 안까고 접근이 가능해졌다.
System.IO.Packaging 을 이용한것인데, 많이 편하다 (파일및 디렉토리 제어권이 안풀려서 예외 날아오지도 않고..)^^

        private void doWork(string fileName)
        {
            WordprocessingDocument doc = WordprocessingDocument.Open(fileName,true);

            MainDocumentPart mdp = doc.MainDocumentPart;
            WordprocessingCommentsPart cmtPart = mdp.WordprocessingCommentsPart;

            XmlDocument docXml = new XmlDocument();
            docXml.Load(mdp.GetStream());
            
            XmlNodeList xnl = docXml.GetElementsByTagName(@"w:t");
            
            int i = 0;
            
            foreach (XmlNode node in xnl)
            {
                node.InnerText = "text" + i;
                i++;
            }

            docXml.Save(mdp.GetStream(FileMode.Create,FileAccess.Write));
            doc.Close();
        }

다음에 갈아엎을때 도입하고 싶네.. ^^

추가 : http://msdn.microsoft.com/ko-kr/magazine/cc164242.aspx 

AND

까먹지말고 황금같은 일주일 공부하자!!! ㅋㅋ 과연??
http://technet.microsoft.com/ja-jp/bb291010.aspx

AND

So you’re sitting there on Saturday morning, sipping on a nice warm cup of coffee or tea. You smell the freshness of the morning, and whipping up some html, CSS and trying out some new AJAX programming.  You’re stuck on something! You wish you had a quick cheat sheet to get you back on track.  Look no further if you’re a web developer!  This is the Ultimate Web Development Cheat Sheet Guide!

Check Out Part 2 of this List!
Ultimate Server-Side Web Development Cheat Sheets - As Promised! Enjoy!

10 of The Best Wed Development FireFox Extensions!

10 Must Have Web Development FireFox Extensions - Check it Out!

JavaScript

JavaScript Cheat Sheet

Addison-Wesley’s JavaScript Reference Card

JavaScript Quick Reference

JavaScript and Browser Objects Quick Reference

JavaScript in 10 Minutes - Thanks Joseph

CSS

CSS Help Sheet

CSS Shorthand Guide

CSS Cheat Sheet

Cascading Style Cheat Sheet

CSS Cheat Sheet

CSS Quick Reference

Leslie Franke CSS Cheat Sheet

Design 215 CSS Quick Reference

CSS Level 1 Quick Reference

CSS Level 2 Quick Reference

CSS Property Index

HTML/XHTML

HTML Help Sheet

XHTML Cheat Sheet

HTML Cheat Sheet

HTML Character Entities Cheat Sheet

PDF HTML Cheat Sheet

Character Entity References in HTML 4 and XHTML 1.0

HTML & XHTML Cheat Sheet

HTML Tags

HTML Quick Reference Guide

A Simple Guide to HTML

Reference HTML Cheat Sheet

HTML Tags Cheat Sheet

AJAX

What’s Ajax? Cheat Sheet

Prototype Cheat Sheet

Scriptaculous Combination Effects Cheat Sheet

Scriptaculous Cheat Sheet - Thanks Joseph

AJAX for ASP.net Cheat Sheet

ASP.net AJAX Client Life-Cycle Events

MooTools Cheat Sheet - Thanks Joseph

Colors

RGB Hex Color Chart

Interactive Color Picker

HTML Color Codes

Color Reference Guide

Microformats

Microformats Helper Cheat Sheet

Microformats Cheat Sheet

Jack Daniel’s Microformats Cheat Sheet

Browser Compatibility

W3C DOM Compatibility Tables

Browser Compatibility Interactive Table

XML

Fusebox 4.1 XML Cheat Sheet

VoiceXML Reference

MathML Reference

XML Schema 2001 Reference

XML Schema 2000/10

XSLT Quick References

XML TopicMaps 1.0 - Quick Reference Card

XML Quick References

XML Schema - Structures Quick Reference

XML Schema - Data Types Quick Reference

XSL FO Reference

XSLT Quick Reference Card

XSLT Reference

 

Check Out Part 2 of this List!
Ultimate Server-Side Web Development Cheat Sheets - As Promised! Enjoy!

10 of The Best Wed Development FireFox Extensions!
10 Must Have Web Development FireFox Extensions

출처 : http://www.realsoftwaredevelopment.com/ultimate-web-development-cheat-sheet-guide/

AND

지난번에 봐둔걸 까먹고 또 검색을 한고로..
아무래도 등록해놔야할듯해서 적어봄..

나는 평소에 이렇게 만들어 썼었다.
<span style="cursor:pointer;" onclick="anyFuntion();">link</span>
다만 태그의 본연의 기능이 아니기에 표준을 준수하기 위해 검색 시작..

이넘이 일반적인 링크..
<a href="#" onclick="anyFuntion();">link</a>
이렇게 쓰면 화면 전환 직전에 화면 최상단까지 스크롤 된후 페이지가 이동된다.

<a href="javascript: return false;" onclick="anyFuntion();">link</a>
이게 맞는줄 알았는데 에러가 발생..

그래서 찾아낸 두녀석.. 둘다 스크롤없이 anyFunction()을 실행함
<a href="javascript;" onclick="anyFuntion();">link</a>
<a href="javascript:void(0);" onclick="anyFuntion();">link</a>

에효 휘발성 메모리를 가진 죄로 글이 늘어가는군..
AND

AND

IE6에선 별반 차이 없어보이는 이 두녀석..
브라우저별로 동작이 아주 약간 다르다..
event가 끼었을경우 이야기다.
키가 눌렀을때 인식하는 키값을 알아오는것이
event.keyCode

문젠 Firefox의경우 keypress로 처리해버리면
키값이 설정되기 전에 실행해버리기때문에 키값을 얻을 수 없다.

결국 keydown으로 처리


그외에 필요없는 키 입력을 필터링 해버리는 작업을 했다.
아래의 필터제외 대상은 키보드의 숫자. 키패드의 숫자 및 기본적 조작키

키입력 이벤트 취소가 IE와 FF&Chrome의 처리법이 다르므로 분기 작성..

function onlyNumber(evt)
{
    if ((evt.keyCode<8)||((evt.keyCode>9)&&(evt.keyCode<35))||((evt.keyCode>57)&&(evt.keyCode<96))||(evt.keyCode>105))
    {
        if(navigator.appName == "Microsoft Internet Explorer")
        {
            evt.returnValue = false;
            evt.cancelBubble = true;
        }
        if(evt.preventDefault)
        {
            evt.preventDefault();
            evt.stopPropagation();
        }
    }
}

아래는 event.keyCode의 값들이다.

Key code Value
DOM_VK_CANCEL 3
DOM_VK_HELP 6
DOM_VK_BACK_SPACE 8
DOM_VK_TAB 9
DOM_VK_CLEAR 12
DOM_VK_RETURN 13
DOM_VK_ENTER 14
DOM_VK_SHIFT 16
DOM_VK_CONTROL 17
DOM_VK_ALT 18
DOM_VK_PAUSE 19
DOM_VK_CAPS_LOCK 20
DOM_VK_ESCAPE 27
DOM_VK_SPACE 32
DOM_VK_PAGE_UP 33
DOM_VK_PAGE_DOWN 34
DOM_VK_END 35
DOM_VK_HOME 36
DOM_VK_LEFT 37
DOM_VK_UP 38
DOM_VK_RIGHT 39
DOM_VK_DOWN 40
DOM_VK_PRINTSCREEN 44
DOM_VK_INSERT 45
DOM_VK_DELETE 46
DOM_VK_0 48
DOM_VK_1 49
DOM_VK_2 50
DOM_VK_3 51
DOM_VK_4 52
DOM_VK_5 53
DOM_VK_6 54
DOM_VK_7 55
DOM_VK_8 56
DOM_VK_9 57
DOM_VK_SEMICOLON 59
DOM_VK_EQUALS 61
DOM_VK_A 65
DOM_VK_B 66
DOM_VK_C 67
DOM_VK_D 68
DOM_VK_E 69
DOM_VK_F 70
DOM_VK_G 71
DOM_VK_H 72
DOM_VK_I 73
DOM_VK_J 74
DOM_VK_K 75
DOM_VK_L 76
DOM_VK_M 77
DOM_VK_N 78
DOM_VK_O 79
DOM_VK_P 80
DOM_VK_Q 81
DOM_VK_R 82
DOM_VK_S 83
DOM_VK_T 84
DOM_VK_U 85
DOM_VK_V 86
DOM_VK_W 87
DOM_VK_X 88
DOM_VK_Y 89
DOM_VK_Z 90
DOM_VK_CONTEXT_MENU 93
DOM_VK_NUMPAD0 96
DOM_VK_NUMPAD1 97
DOM_VK_NUMPAD2 98
DOM_VK_NUMPAD3 99
DOM_VK_NUMPAD4 100
DOM_VK_NUMPAD5 101
DOM_VK_NUMPAD6 102
DOM_VK_NUMPAD7 103
DOM_VK_NUMPAD8 104
DOM_VK_NUMPAD9 105
DOM_VK_MULTIPLY 106
DOM_VK_ADD 107
DOM_VK_SEPARATOR 108
DOM_VK_SUBTRACT 109
DOM_VK_DECIMAL 110
DOM_VK_DIVIDE 111
DOM_VK_F1 112
DOM_VK_F2 113
DOM_VK_F3 114
DOM_VK_F4 115
DOM_VK_F5 116
DOM_VK_F6 117
DOM_VK_F7 118
DOM_VK_F8 119
DOM_VK_F9 120
DOM_VK_F10 121
DOM_VK_F11 122
DOM_VK_F12 123
DOM_VK_F13 124
DOM_VK_F14 125
DOM_VK_F15 126
DOM_VK_F16 127
DOM_VK_F17 128
DOM_VK_F18 129
DOM_VK_F19 130
DOM_VK_F20 131
DOM_VK_F21 132
DOM_VK_F22 133
DOM_VK_F23 134
DOM_VK_F24 135
DOM_VK_NUM_LOCK 144
DOM_VK_SCROLL_LOCK 145
DOM_VK_COMMA 188
DOM_VK_PERIOD 190
DOM_VK_SLASH 191
DOM_VK_BACK_QUOTE 192
DOM_VK_OPEN_BRACKET 219
DOM_VK_BACK_SLASH 220
DOM_VK_CLOSE_BRACKET 221
DOM_VK_QUOTE 222
DOM_VK_META 224

참고 사이트 : http://blog.naver.com/xtype/10014440515 ,

AND

Chrome의 버그(?)

WEB/ASP.NET 2008. 11. 11. 11:23
ASP.NET의 AutoPostBack의 자바스크립트가 Chrome에서 오동작 하는 사례가 발견됨..
내가 만든 소스의 경우 asp:ListItem(HTML의 SELECT)의 selectedIndex가 바뀔때 마다 PostBack을 하도록 작성되었는데..
Chrome은 해당 자바스크립트의 매개변수인 이벤트(evt)가 정의 되어있지않다고 에러가 뜨며(라곤해도 디버거를 봐야만 보임) 동작하지 않음

관련된(과연?) 포스트
validation 문제라는데..
http://weblogs.asp.net/stefansedich/archive/2008/11/04/bug-with-latest-google-chrome-and-asp-net-validation.aspx
AND

t,.찾아본결과 자바스크립트 이벤트중 인수를 가진 메소드를 등록하는 방법은

고전적인 방법으로 태그에 삽입하는법과
동적으로 메소드로 치환하여 할당하는 법

두가지가 있다.  는 결론..

전자는 생략

후자

[element].addEventListener("click", function() { [methodName]([arg0],[arg1],...); }, false);     //NS

[element].attachEvent("onclick", function() { [methodName]([arg0],[arg1],...); });                  //IE

[element].onclick = [methodName];                                                                                   //All?

^^

AND

Q. Button의 onclick 이벤트 발생 시,

     onclick_button() 이라는 이벤트 핸들러가 수행되도록 설정하려면 어떻게 해야할까?

    : 객체의 이벤트리스너에 이벤트핸들러를 등록한다.

        * 이벤트 핸들러 == 이벤트 처리기, 이벤트 발생 시 수행되는 함수

        * 이벤트 리스너 == 이벤트 발생 인지기, 이벤트 발생을 인지하고, 수행할 함수들을 알고 있다.

 

1,2번은 간편하게 사용되는 등록방법이고,

3번에서 제시되는 등록방법과 삭제방법을 모두 사용하면 이벤트 처리과정을 상세하게 다룰 수 있다.

 

1. HTML 태그에서 등록

형    식

사  용  예

 event = "eventHandler()"  <input type="button" onclick="onclick_button()">

  * 이벤트핸들러에 ""()를 꼭 사용

 

2. javascript에서 등록

형    식

사  용  예

 object.event = eventHandler;

 var btn = document.getElementById("btn");

 btn.onclick = onclick_button;

    * 괄호를 쓰지 않기 때문에 괄호 안에 파라미터들을 넣을 수 없다.

 

3. 이벤트 리스너에 등록 / 삭제 (이벤트에 ""를 사용)

  3.1 등록

        case #1. -  InternetExplorer (이하 IE) 

형    식

사  용  예

 obj.attachEvent("event", eventHandler)

 var btn = document.getElementById("btn"); 

 btn.attachEvent("onclick", onclick_button);

 

 

 

       case #2. -  FireFox 및 기타 브라우저 (이하 FF)

형    식

사  용  예

 obj.addEventListener("event", eventHandler, bool)

 var btn = document.getElementById("btn"); 

 btn.addEventListener("click", onclick_button, false);

   

 

 

 

        * "event" 이름 앞의 on 빠지는 것에 주의 (IE: onclick <--> FF: click)

        * bool: capture 여부

           자세한 사항은 W3C의 HTML 이벤트처리 권고안 또는 이벤트 처리 상세내용(DOM 레벨1) 참고

 

       case #3. - 크로스 브라우저 (IE, FF 등 모든 브라우저에서 사용할 수 있도록)

형    식

사  용  예

 각 브라우저가 제공하는 이벤트리스너를 확인 

 if (obj.attachListener) {                    // IE

  obj.attachEvent("event", eventHandler);

 } else if (obj.addEventListener) {      // FF

  obj.addEventListener("event", eventHandler, bool);

 }

 var btn = document.getElementById("btn");  

 if (btn.attachListener) {                    // IE

  btn.attachEvent("onclick", onclick_button);

 } else if (btn.addEventListener) {      // FF

  btn.addEventListener("click", onclick_button, false);

 }

 

 

 

 

 

 

 

 

         *  IE 7.0 이상에서는 if (window.ActiveXObject)를 사용하여 IE 브라우저임을 확인 (XMLHttpRequest 참조)

 

  3.2 삭제 (3.1 case #3.에 대응) 

형    식

사  용  예

  각 브라우저가 제공하는 이벤트리스너를 확인

 

 if (obj.attachListener) {                    // IE

  obj.detachEvent("event", eventHandler);

 } else if (obj.addEventListener) {      // FF

  obj.removeEventListener("event", eventHandler, bool);

 }

 var btn = document.getElementById("btn"); 

 

 if (btn.attachListener) {                    // IE

  btn.detachEvent("onclick", onclick_button);

 } else if (btn.addEventListener) {      // FF

  btn.removeEventListener("click", onclick_button, false);

 }

 

 

 

 

 

 

 

 

 

        * detachEvent 및 removeEventListener의 사용 시 인수들의 순서는

           attachEvent 와 addEventListener와 동일하다. (3.1 참조)


<예제> 1. "크기 바꾸는 스타일 적용" 버튼을 누르면, 텍스트상자의 크기가 변하고, <-- changeHeight() 함수 호출

            2. "새 버튼 생성" 버튼을 누르면, 새 버튼이 생성되어 화면에 추가된다. <-- createButton() 함수 호출

            3. "메시지 창 띄우기" 버튼을 누르면, 메시지 창이 화면에 나타난다. <-- alertButton_click() 함수 호출

 

1. HTML 태그에 직접 / 2. javascript에서 직접 / 3. javascript에서 이벤트 리스너에

각각 이벤트 핸들러 함수를 등록하여, 이벤트가 발생했을 때 수행되도록 작성했다.   " " 및 ( ) 표시에 주의!


  
<html>
  <head>
    <title>이벤트 핸들러 테스트 페이지</title>
    <script language="javascript">
 
      function changeHeight()
      {
        var obj = document.getElementById("log");
        if(obj.style.height == "200px") {
          obj.style.height = "100px"; 
        } else {
          obj.style.height = "200px";
        }
        obj.value += "변경된 크기: " + obj.style.height + "\n";
      }
 
      function load()
      {
        var obj = document.getElementById("log");
        obj.value = "HTML 객체들의 개수: " + document.all.length + "\n"; 
        obj.value += "log의 객체 태그이름: " + document.all.log.nodeName + "\n";
        obj.value += "info의 HTML 문자열: " + document.all.info.innerHTML + "\n";
        
        // 2. javascript에서 직접등록 ojb.event = eventHandler;
        var btn = document.getElementById("createBtn");
        btn.onclick=createButton;                     
 
       // 3. javascript에서 이벤트 리스너에 등록
        var al = document.getElementById("alertBtn");
        if (al.attachListener) {                     // IE                  * IE 7.0 이상에서는 (window.ActiveXObject)를 사용
          al.attachEvent("onclick", alertButton_click);
        } else if (al.addEventListener) {      // FF
          al.addEventListener("click", alertButton_click, false);
        }
      } 
     
      function createButton()
      {
        var panel = document.getElementById("myDiv");
        var newObj = document.createElement("INPUT");      
        newObj.type = "button";                                   
        newObj.value = "New Button";
        panel.appendChild(newObj);                               
      }
     
      function alertButton_click()
      {
        alert("메시지 창 띄우기 버튼을 클릭했습니다.");
      }
 
    </script>
  </head>
 
 
  <body onload="load()">
    <h2 id="info">연습해보겠습니다.</h2>

    // 1. HTML 태그에서 직접등록
    <input id="heightBtn" type="button" value="크기 바꾸는 스타일 적용" onclick="changeHeight()"></input>
    // 2. javascript에서 직접등록
    <input id="createBtn" type="button" value="새 버튼 생성"></input>
    // 3. javascript에서 이벤트 리스너에 등록
    <input id="alertBtn" type="button" value="메시지 창 띄우기"></input>
    <br>
    <textarea id="log" style="width:100%; height:200px;"></textarea>
    <br>
    <div id="myDiv"></div>
  </body>
</html>
AND

* JavaScript에서의 this 지시자

 JavaScript에서 this는 다른 언어에서와 마찬가지로, 해당 함수가 속해있는 객체를 가리킨다. 전역 함수의 경우에 this는 window 객체를 가리킨다.

다음의 예제는 hello 함수를 하나 선언한 후에, 서로 다른 클래스에서 hello 함수를 메소드로 등록하여 사용하는 예제이다.

function hello() 
{
alert("Hi, I'm "+ this.name);
}
function ClassA()
{
this.name = "A";
}
function ClassB()
{
this.name = "B";
}
var a = new ClassA;
a.hello = hello;
a.hello();
var b = new ClassB;
b.hello = hello;
b.hello();

 

* JavaScript의 이벤트 핸들러 등록 방법

 JavaScript에서 이벤트 핸들러를 등록하는 방법에는 세 가지가 있다.

1) [Object].addEventListener("name_of_event", fnHandler, bCapture);
 DOM에서 사용하는 방법이다. (IE에서는 지원하지 않는다.) 여러 개의 이벤트 핸들러를 등록할 수 있다.

2) [Object].attachEvent("name_of_event_handler", fnHandler);
 IE 에서 사용하는 방법이다. MSIE에서는 이벤트가 발생했을 때, capturing phase가 없기 때문에 이 함수에는 세번째 인자가 없다. addEventListener 함수를 사용할 때, bCapture=false로 한 것과 같다. 역시 여러 개의 이벤트 핸들러를 등록할 수 있다.

3) [Object].name_of_event_handler = fnHandler;
 JavaScript에서 이벤트 핸들러를 등록하는 전통적인 방법인 대입법이다. 호환성이 좋으나 이벤트 핸들러를 하나밖에 등록할 수 없다.

 그래서, 여러 브라우저에서 동작하도록 이벤트 핸들러 등록 함수를 만들때 다음과 같이 한다. Professional JavaScript for Web Developers(Wrox) p.292에 나온 예제이다.

EventUtil.addEventHandler = function (oTarget, sEventType, fnHandler) 
{
if (oTarget.addEventListener)
{ //for DOM-compliant browsers
oTarget.addEventListener(sEventType, fnHandler, false);
}
else if (oTarget.attachEvent)
{ //for IE
oTarget.attachEvent("on" + sEventType, fnHandler);
}
else
{ //for all others
oTarget["on" + sEventType] = fnHandler;
}
};

 정말 이렇게 사용해도 될까?

 대부분의 경우에는 문제 없이 동작할 것이다. 하지만, fnHandler 안에서 this를 사용한다면 문제가 될 수 있다. attachEvent 함수를 통해서 등록된 이벤트 핸들러와 대입법으로 등록된 이벤트 핸들러에 대한 IE의 내부적인 동작 방식이 다르기 때문이다.

 다음의 예제를 보자.

function onClickEventHandler(event) 
{
if (this == window)
{
alert("This is the window object");
}
else
{
alert(this.tagName);
}
}
myObject.onclick = onClickEventHandler;
myObject.attachEvent("onclick", onClickEventHandler);

 위와 같이 이벤트 핸들러를 작성하여 테스트를 해 보면 차이점을 좀더 확실히 알 수 있다. 같은 객체에 대해 이벤트 핸들러를 두 개 등록했으며, myObject 객체를 클릭하면 alert 창이 두 번 나타날 것을 예상할 수 있다. 하지만 그 메시지의 내용은 다를 것이다.

 대입법으로 이벤트 핸들러를 등록하면, 그 이벤트 핸들러 함수는 해당 객체의 메소드처럼 동작한다. 반면에 attachEvent 함수를 사용하여 등록하면, 이벤트가 발생했을 때 호출될 뿐이지 해당 객체의 메소드가 되는 것은 아니다. 또한, 호출되는 순서도 정해져 있다. 대입법으로 등록된 이벤트 핸들러가 먼저 호출된 후에, attachEvent 함수로 등록된 이벤트 핸들러가 호출된다. attachEvent함수로 등록된 이벤트 핸들러들끼리는 호출 순서의 규칙이 없고 랜덤하게 호출된다. (addEventListener 함수로 등록된 이벤트 핸들러는 등록된 순서대로 호출된다.) 그러므로 위 예제에서 이벤트 핸들러의 등록 순서를 다음과 같이 바꿔도 실제 호출되는 순서는 변함이 없다.

myObject.attachEvent("onclick", onClickEventHandler);
myObject.onclick = onClickEventHandler;

 Professional JavaScript for Web Developers(Wrox Press, 2005)에서는 등록할 수 있는 핸들러의 개수만 빼고 모두 같은 거라고 되어있고 이러한 차이점에 대한 언급이 없다. MSDN에는 이런 차이점이 잘 설명되어 있으므로, Microsoft 관련한 의문사항은 MSDN을 살펴보는 습관을 기르자. ㅡㅂㅡ;

===================================================================================================================

출처 : http://mashedon.egloos.com/1484422

AND

일부 처리를 웹서비스를 통해 성능향상을 도모하려 했으니 난관에 부딛혔으니
그건 바로 세션이 공유 되지 않는 다는점이다.

일단 default로는 웹서비스에선 세션이 존재하지 않는다

고로 attribute로 설정을 해주어야하는데
동일 웹 사이트내의 페이지에서 웹서비스를 부르는경우에
웹서비스는 새로운 세션이 할당 되어버린다.

세션을 통한 공유는 불가능하다는 이야기가 되어버린다.

흠 application을 써야하나.. =.=
AND

SELECT에 횡 스크롤이 가능하냐는 질문에 이것저것 답변이 올라왔는데

해결책으로 제시된녀석이 바로 DIV로 씌우기이다.
<DIV [스크롤가능]><SELECT [풀 사이즈]></SELECT></DIV>

이거 말고는 레이어질 밖에 없을듯 싶기도 하고 그렇게 하면 표준을 벗어나기에..

뭐 어쨌든 누가 고맙게도 커스텀 콘트롤로 만들어 놓았네..
언젠가 쓰이지 않을까 하여 안까먹게 적어두기.. (끄적끄적)

http://www.codeproject.com/KB/custom-controls/ListBoxComponent01.aspx
AND


System.Web.UI.HtmlControls밑에 존재하는 클래스들이 있다.

내가 유용하게 이용하는 코딩으로 HTML콘트롤을 추가할때 사용되어지는..

table tr td a input등... 이라고 얼마전까지 알고 있었다.



오늘 발견한 HtmlGenericControl이라는 녀석

이걸 이용하면 클래스 형태로 제공되지 않는 나머지 HTML태그도 콘트롤 형태로 만들수 있다.



어디에 쓰냐고??


element.Controls.Add(요기에..);

이하 HtmlControls의 설명
  Class Description
Public class HtmlAnchor Allows programmatic access to the HTML <a> element on the server.
Public class HtmlButton Allows programmatic access to the HTML <button> tag on the server.
Public class HtmlContainerControl Serves as the abstract base class for HTML server controls that map to HTML elements that are required to have an opening and a closing tag.
Public class HtmlControl Defines the methods, properties, and events common to all HTML server controls in the ASP.NET page framework.
Public class HtmlEmptyTagControlBuilder Interacts with the page parser to build HTML server controls that do not have a body or closing tag. This class cannot be inherited.
Public class HtmlForm Provides programmatic access to the HTML <form> element on the server.
Public class HtmlGenericControl Defines the methods, properties, and events for all HTML server control elements not represented by a specific .NET Framework class.
Public class HtmlHead Provides programmatic access to the HTML <head> element on the server.
Public class HtmlHeadBuilder Interacts with the parser to build an HtmlHead control.
Public class HtmlImage Provides programmatic access for the HTML <img> element on the server.
Public class HtmlInputButton Allows programmatic access to the HTML <input type= button>, <input type= submit>, and <input type= reset> elements on the server.
Public class HtmlInputCheckBox Allows programmatic access to the HTML <input type= checkbox> element on the server.
Public class HtmlInputControl Serves as the abstract base class that defines the methods, properties, and events common to all HTML input controls, such as the <input type=text>, <input type=submit>, and <input type= file> elements.
Public class HtmlInputFile Allows programmatic access to the HTML <input type= file> element on the server.
Public class HtmlInputHidden Allows programmatic access to the HTML <input type=hidden> element on the server.
Public class HtmlInputImage Allows programmatic access to the HTML <input type= image> element on the server.
Public class HtmlInputPassword Allows programmatic access to the HTML <input type= password> element on the server.
Public class HtmlInputRadioButton Allows programmatic access to the HTML <input type= radio> element on the server.
Public class HtmlInputReset Allows programmatic access to the HTML <input type=reset> element on the server.
Public class HtmlInputSubmit Allows programmatic access to the HTML <input type= submit> element on the server.
Public class HtmlInputText Allows programmatic access to the HTML <input type= text> and <input type= password> elements on the server.
Public class HtmlLink Allows programmatic access to the HTML <link> element on the server.
Public class HtmlMeta Allows programmatic access to the HTML <meta> tag on the server.
Public class HtmlSelect Allows programmatic access to the HTML <select> element on the server.
Public class HtmlSelectBuilder Interacts with the parser to build an HtmlSelect control.
Public class HtmlTable Allows programmatic access on the server to the HTML <table> element.
Public class HtmlTable.HtmlTableRowControlCollection Represents a collection of HtmlTableRow objects that are the rows of an HtmlTable control.
Public class HtmlTableCell Represents the <td> and <th> HTML elements in an HtmlTableRow object.
Public class HtmlTableCellCollection A collection of HtmlTableCell objects that represent the cells in a single row of an HtmlTable control. This class cannot be inherited.
Public class HtmlTableRow Represents the <tr> HTML element in an HtmlTable control.
Public class HtmlTableRow.HtmlTableCellControlCollection Represents a collection of HtmlTableCell objects that are the cells of an HtmlTableRow control.
Public class HtmlTableRowCollection A collection of HtmlTableRow objects that represent the rows of an HtmlTable control. This class cannot be inherited.
Public class HtmlTextArea Allows programmatic access to the <textarea> HTML element on the server.
Public class HtmlTitle Allows programmatic access to the HTML <title> element on the server.
AND

결과화면 테이블의 필터링을 자바스크립트로 처리하기로 방침을 정한후,

childNodes로 접근해보니 자식개수가 1개밖에 안나오는 상황이 발생..

결국 확인해보니 DOM의 element개체단위론 table까지만 접근가능하고

row나cell로의 접근은 속성(?)으로 처리되는거였다..

에효 간단한거에 또 시간을 잡아먹어버린 하루..

document.getElementById("gridview").rows[i].childNodes[j]

AND