반응형
 SELECT PROJECT_CODE
	   ,PROJECT_NAME
	   ,P_PROJECT_CODE
   FROM PROJECT
  WHERE PROJECT_CODE IN (SELECT PROJECT_CODE
                           FROM PROJECT_SUB
                          START WITH PROJECT_CODE = '111111'
                        CONNECT BY PRIOR P_CONTP_CD = CONTP_CD)
  START WITH P_PROJECT_CODE IS NULL
CONNECT BY PRIOR PROJECT_CODE = P_PROJECT_CODE;

특정 계층만 나오도록 하는 SQL

 

* 예시 *                         ==>      ** 아래와 같이 홍길동의 상위만 출력 ***

사장                                                          사장

    - 개발팀                                                      - 개발팀

         - 홍길동                                                        - 홍길동

         - 이몽룡

         - 성춘향

    - 디자인팀

         - 잡스형

         - 앙드레

반응형

'Oracle' 카테고리의 다른 글

[ Oracle ] 하위에서 상위로 누적 합계 SQL  (0) 2022.05.27
반응형
 SELECT PROJECT_CODE
       ,PROJECT_NAME
       ,PROJECT_AMT
       ,(SELECT SUM(PROJECT_AMT)
           FROM PROJECT 
          START WITH PROJECT_CODE = A.PROJECT_CODE
        CONNECT BY PRIOR PROJECT_CODE = P_PROJECT_CODE) SUM_AMT
   FROM PROJECT A
  START WITH P_PROJECT_CODE IS NULL
CONNECT BY PRIOR PROJECT_CODE = P_PROJECT_CODE;

 

계층 쿼리에서 제일 하위노드에서 상위노드로 합산해서 금액 보여주기.

 

* 결과값 *

반응형

'Oracle' 카테고리의 다른 글

[ Oracle ] 특정 계층만 조회 SLQ  (0) 2022.05.27
반응형

//데이터 바인딩 후 AcceptChanges()를 해줘야 이후 State 값들을 알 수 있다.

DataTable dtPartList = GetWorkStandardPartListInfo();
grd_MAIN.DataSource = dtPartList;
(grd_MAIN.DataSource as DataTable).AcceptChanges();

 

//로우 삭제 (Remove 사용할 시 완전히 삭제 되기 때문에 Delete()를 사용)

Row.Delete();

 

//바뀐 데이터들을 가져와 상태 값별로 처리하는 로직

IEnumerable DataList_Sub = GridData_Main.AsEnumerable().Where(d => d.RowState != DataRowState.Unchanged);
foreach (var rowData in DataList_Sub)
{
if (rowData.RowState.Equals(DataRowState.Added) || rowData.RowState.Equals(DataRowState.Modified))
{
dtDetail.Rows.Add(
MITUtil.GetStringTrim(bte_MODEL_NO.EditValue),
MITUtil.GetStringTrim(bte_PRODUCT_NO.EditValue),
MITUtil.GetStringTrim(cbo_REV_NO.EditValue, "0"),
rowData["GROUP_NO"],
rowData["PART_NO"],
rowData["ITEM_NO"],
rowData["ITEM_QTY"],
rowData["REMARK"],
rowData["OPTION_SPEC"],
rowData["INSPECT_SPEC1"],
rowData["INSPECT_SPEC2"],
rowData["INSPECT_SPEC3"],
UserInfo.UserID,
UserInfo.UserID
);
}
else if (rowData.RowState.Equals(DataRowState.Deleted))
{
dtDeleteDetail.Rows.Add(
rowData["MODEL_NO", DataRowVersion.Original],
rowData["PRODUCT_NO", DataRowVersion.Original],
rowData["REV_NO", DataRowVersion.Original],
rowData["GROUP_NO", DataRowVersion.Original],
rowData["PART_NO", DataRowVersion.Original]
);
}
}

반응형

'C# > basic' 카테고리의 다른 글

C# 소수점 반올림  (0) 2018.04.26
C# DataTable 사용법  (0) 2018.04.26
C# json 데이터 변환  (0) 2018.04.26
반응형

                    SpreadsheetDocument doc = SpreadsheetDocument.Open(fileInfo.LocalFilePath, false);
                    WorkbookPart workbookPart = doc.WorkbookPart;
                    Sheet sheet = workbookPart.Workbook.Sheets.GetFirstChild();
                    Worksheet worksheet = (doc.WorkbookPart.GetPartById(sheet.Id.Value) as WorksheetPart).Worksheet;
                    SharedStringTablePart stringTablePart = doc.WorkbookPart.SharedStringTablePart;
                    IEnumerable rows = worksheet.GetFirstChild().Descendants();

                    SetObtainOrderExcelHD(rows, stringTablePart);
                   

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

private void SetObtainOrderExcelHD(IEnumerable rows, SharedStringTablePart stringTablePart)
{
                List<List> listRow = new List<List>();
                List listCell = null;
                foreach (Row row in rows)
                {
                    //첫번째 해더는 버리기(셀 타이틀이라서)
                    if (row.RowIndex.Value == 1)
                    {
                        continue;
                    }

                    listCell = new List();
                    for (int i = 0; i < row.Descendants().Count(); i++)
                    {
                        listCell.Add(GetCellValue(row.Descendants().ElementAt(i), stringTablePart));
                    }
                    listRow.Add(listCell);
                }
}

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

public string GetCellValue(DocumentFormat.OpenXml.Spreadsheet.Cell cell, SharedStringTablePart stringTablePart)
{
            string value = string.Empty;
            if (cell.CellValue != null)
            {
                value = cell.CellValue.InnerXml;
                if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString)
                {
                    value = stringTablePart.SharedStringTable.ChildElements[Int32.Parse(value)].InnerText;
                }

                //날짜 데이터는 아래와 같이 해줘야함.
                if (cell.StyleIndex != null && "8".Equals(cell.StyleIndex.InnerText))
                {
                    if (!string.IsNullOrEmpty(value))
                    {
                        DateTime cellDate = DateTime.FromOADate(Convert.ToDouble(cell.CellValue.InnerText));

                        if (cellDate != null)
                        {
                            value = cellDate.ToString("yyyy-MM-dd");
                        }
                    }
                    
                }

            }
            return value;
}


            

반응형

'API > C#' 카테고리의 다른 글

OpenXML Excel Write Download  (0) 2019.12.10
C# Instagram API  (1) 2018.05.04
반응형


            MemoryStream mem = new MemoryStream();
            SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(mem, SpreadsheetDocumentType.Workbook);
            try
            {
                WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
                workbookpart.Workbook = new Workbook();
                WorksheetPart worksheetPart = workbookpart.AddNewPart();
                worksheetPart.Worksheet = new Worksheet(new SheetData());
                Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild(new Sheets());
                Sheet sheet = new Sheet()
                {
                    Id = spreadsheetDocument.WorkbookPart.
                    GetIdOfPart(worksheetPart),
                    SheetId = 1,
                    Name = "Sheet1"
                };
                sheets.Append(sheet);

                DataSet dsResult = GetExcelData();
                DataRow drRow = null;
                Cell cell = null;
                uint iRowIdx = 0;
                string[] sheetArray = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L" };
                for (int i = 0; i < dsResult.Tables[0].Rows.Count; i++)
                {
                    drRow = dsResult.Tables[0].Rows[i];
                    iRowIdx = Convert.ToUInt32(i + 1);

                    for (int j = 0; j < sheetArray.Length; j++)
                    {
                        cell = InsertCellInWorksheet(sheetArray[j], iRowIdx, worksheetPart);
                        cell.CellValue = new CellValue(drRow[j].ToString());
                        cell.DataType = new EnumValue(CellValues.String);
                    }
                }
                workbookpart.Workbook.Save();
                spreadsheetDocument.Close();

                Response.Clear();
                Response.AddHeader("Content-Disposition", "attachment; filename=" + "EAS04030.xlsx");
                Response.AddHeader("Content-Length", mem.ToArray().Length.ToString());
                Response.ContentType = "application/vnd.ms-excel";
                Response.BinaryWrite(mem.ToArray());
                Response.Flush();
                Response.Close();
            }
            catch (Exception ex)
            {

            }
            finally
            {
                spreadsheetDocument.Dispose();

            }

 

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

private Cell InsertCellInWorksheet(string columnName, uint rowIndex, WorksheetPart worksheetPart)
{
            Worksheet worksheet = worksheetPart.Worksheet;
            SheetData sheetData = worksheet.GetFirstChild();
            string cellReference = columnName + rowIndex;

            // If the worksheet does not contain a row with the specified row index, insert one.
            Row row;
            if (sheetData.Elements().Where(r => r.RowIndex == rowIndex).Count() != 0)
            {
                row = sheetData.Elements().Where(r => r.RowIndex == rowIndex).First();
            }
            else
            {
                row = new Row() { RowIndex = rowIndex };
                sheetData.Append(row);
            }

            // If there is not a cell with the specified column name, insert one.  
            if (row.Elements().Where(c => c.CellReference.Value == columnName + rowIndex).Count() > 0)
            {
                return row.Elements().Where(c => c.CellReference.Value == cellReference).First();
            }
            else
            {
                // Cells must be in sequential order according to CellReference. Determine where to insert the new cell.
                Cell refCell = null;
                foreach (Cell cell in row.Elements())
                {
                    if (cell.CellReference.Value.Length == cellReference.Length)
                    {
                        if (string.Compare(cell.CellReference.Value, cellReference, true) > 0)
                        {
                            refCell = cell;
                            break;
                        }
                    }
                }

                Cell newCell = new Cell() { CellReference = cellReference };
                row.InsertBefore(newCell, refCell);

                worksheet.Save();
                return newCell;
            }
}

반응형

'API > C#' 카테고리의 다른 글

OpenXML Excel Read Uplo  (0) 2019.12.10
C# Instagram API  (1) 2018.05.04
반응형

//할당 날짜 구하기

        function fn_getDelegationDate() {

            var sDate = '2018-09-27'

            var dateTime = new Date(sDate);

            var arrayDate = new Array();

            var week = "";

            var idx = 1;

            while (arrayDate.length < 3) {

                var beforeDate = new Date(dateTime.getFullYear(), dateTime.getMonth(), dateTime.getDate() - idx);

                week = fn_getWeek(beforeDate);

                if (week != "토요일" && week != "일요일") {

   //주간날짜담기

                    arrayDate.push(beforeDate);

                }

                idx++;

            }

        }


        //해당 날짜의 요일구하기

        function fn_getWeek(sDate) {

            var week = new Array('일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일');


            var today = new Date(sDate).getDay();

            var weekName = week[today];


            return weekName;

        }

반응형

'Javascript > basic' 카테고리의 다른 글

Javascript 숫자 3자리 , 와 소수점 2자리만 표기  (0) 2018.06.14
반응형

SELECT A.NAME, B.TEXT

FROM  SYS.SYSOBJECTS A

    INNER JOIN

    SYS.SYSCOMMENTS B

    ON A.ID  = B.ID

WHERE  A.XTYPE   = 'P'

 AND  A.CATEGORY = 0

 AND  B.TEXT LIKE '%' + 'TB_FM_DEPT_PLAN' + '%'

 order by 1

반응형

'MS-SQL > basic' 카테고리의 다른 글

MS-SQL 숫자를 한문으로 변경  (0) 2018.06.12
반응형

        function fn_numberCheck(obj) {

            var val = numberWithCommas(obj.getValue().replace(/[^0-9]+/g, ''));

            if(val.length > 1)

            {

                obj.setValue(val.replace(/^[0]+/, ''));

            }else{

                obj.setValue(val);

            }

        }



        function fn_DoubleNumberCheck(obj) {

            var orgVal = obj.getValue().replace(/[^0-9|\.]+/g, '');

            var arry = orgVal.split('.');

            if (arry.length > 1 && (arry.length > 2 || arry[1].length > 2)) {

                return obj.setValue(arry[0] + '.' + arry[1].substring(0, 2));

            } else {

                return obj.setValue(orgVal);

            }

        }

반응형

'Javascript > basic' 카테고리의 다른 글

Javascript - 요일 및 주간 날짜 구하기  (0) 2018.09.27
반응형

USE [HJ_FI]

GO

/****** Object:  UserDefinedFunction [dbo].[FN_NUMTOCHI]    Script Date: 2018-06-12 오후 12:09:31 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER FUNCTION [dbo].[FN_NUMTOCHI] (

@AMOUNT   NUMERIC(12,0)

)

RETURNS   VARCHAR(50)

AS

BEGIN

   DECLARE @LI              INT,

           @LL_PRICE        VARCHAR(50),

           @LL_TMP          VARCHAR(50),

           @LL_TMP_DANWEE   VARCHAR(50),

           @LFLAG           VARCHAR(50),

           @LS_AMOUNT       VARCHAR(50)

   --

   SET @LS_AMOUNT = RTRIM(CAST(@AMOUNT AS VARCHAR(15)))

   SET @LFLAG     = 'N'

   SET @LI        = 1

   SET @LL_TMP_DANWEE = ''

   SET @LL_PRICE  = ''

   SET @LL_TMP    = ''

   --

   WHILE @LI <= LEN(@LS_AMOUNT)

      BEGIN

         SET @LL_TMP = CASE LEFT(RIGHT(@LS_AMOUNT, @LI), 1) WHEN '1' THEN '壹' 

    WHEN '2' THEN '貳' 

    WHEN '3' THEN '參' 

    WHEN '4' THEN '四' 

    --WHEN '5' THEN '伍'

--기존 프린트에 숫자 5는 아래와 같이 사용 중

WHEN '5' THEN '五' 

    WHEN '6' THEN '六' 

    WHEN '7' THEN '七' 

    WHEN '8' THEN '八' 

    WHEN '9' THEN '九' 

    ELSE '0' 

                        END

         --

         IF  @LL_TMP = '0'

             BEGIN

                SET @LI = @LI + 1

                CONTINUE

             END

         --

         SET @LL_TMP_DANWEE = @LL_TMP

         --

         IF  @LI = 1

             BEGIN

                SET @LL_PRICE = @LL_TMP_DANWEE

                SET @LI = @LI + 1

                CONTINUE

             END


         SET @LL_TMP_DANWEE = CASE ((@LI - 1) % 4) WHEN 1 THEN @LL_TMP_DANWEE + '拾'

                                                   WHEN 2 THEN @LL_TMP_DANWEE + '百'

                                                   WHEN 3 THEN @LL_TMP_DANWEE + '阡'

                                                          ELSE @LL_TMP_DANWEE + ''

                               END



         IF  @LI > 4 AND @LI < 9 AND @LFLAG <> 'M'

             BEGIN

                SET @LL_TMP_DANWEE = @LL_TMP_DANWEE + '萬'

                SET @LFLAG         = 'M'

             END


         IF  @LI > 8 AND @LI < 13 AND @LFLAG <> 'U'

             BEGIN

                SET @LL_TMP_DANWEE = @LL_TMP_DANWEE + '億'

                SET @LFLAG         = 'U'

             END


         IF  @LI > 12 AND @LFLAG <> 'J'

             BEGIN

                SET @LL_TMP_DANWEE = @LL_TMP_DANWEE + '兆'

                SET @LFLAG         = 'J'

             END

         --

         SET @LL_PRICE = ISNULL(@LL_TMP_DANWEE,'') + ISNULL(@LL_PRICE,'')

         --

         SET @LI = @LI + 1

         --

      END


   RETURN @LL_PRICE;

--

END

--



반응형

'MS-SQL > basic' 카테고리의 다른 글

MS-SQL Procedure 특정 문자 검색  (0) 2018.08.31
반응형

정규식 강좌


생활코드(https://opentutorials.org) 사이트에 있는 강좌입니다.

https://opentutorials.org/course/909/5143



강좌에 소개된 사이트


정규식 테스트 할 수 있는 사이트

https://regexr.com/


정규식 step별 알려주는 사이트

http://zvon.org/comp/r/tut-Regexp.html#Pages~Contents


정규식 문제 풀기

http://regexone.com

반응형
반응형

//client_id, redirect_uri 값 넘기고 code 받아오기

var client_id = "인스타에서 부여받은 Cient ID";

var redirect_uri = "인스타에 등록된 Valid redirect URIs 값";

Response.Redirect("https://api.instagram.com/oauth/authorize/?client_id=" + client_id + "&redirect_uri=" + redirect_uri + "&response_type=code");



** Cient ID는 어디서 구하는가??

https://instagram.com/developer

여기서 발급 받는데 발급 받는 방법은 Google 검색 하면 자세히 나와 있습니다. 그러므로 패스~! 절대로 귀찮아서 그런건 아닌걸로! 


//redirect 된 곳에서 Request["code"]로 code값 받아 온후 아래 method에 값을 넘겨 줌

private void getToken(string code)

{

try

{

NameValueCollection parameters = new NameValueCollection();

parameters.Add("client_id", "인스타에서 부여받은 Cient ID";);

parameters.Add("client_secret", "인스타에서 부여받은 Client Secret 값";);

parameters.Add("grant_type", "authorization_code");

parameters.Add("redirect_uri", "인스타에 등록된 Valid redirect URIs 값");

parameters.Add("code", code);


WebClient client = new WebClient();

var result = client.UploadValues("https://api.instagram.com/oauth/access_token", "POST", parameters);

var response = System.Text.Encoding.Default.GetString(result);


// deserializing nested JSON string to object  

var jsResult = (JObject)JsonConvert.DeserializeObject(response);

string accessToken = (string)jsResult["access_token"];

string id = jsResult["user"]["id"].ToString();

string username = jsResult["user"]["username"].ToString();


////This code register id and access token to get on client side  

//Page.ClientScript.RegisterStartupScript(this.GetType(), "GetToken", "<script>var instagramaccessid=\"" + @"" + id + "" + "\"; var instagramaccesstoken=\"" + @"" +                                                                     accessToken + "" + "\"; check :"+ check + "</script>");


}

catch (Exception ex)

{

throw;


}

}



//토큰 값으로 인스타그램의 사진이나 정보들에 접근할 수 있는 url ( 서버단에서 C#으로 구현하면 보안이 더 좋을 것 같다. )

[javascript]

function GetPic() {

if (instagramaccesstoken != null) { 

$("#PhotosUL").html("");  

$.ajax({  

type: "GET",  

async: true,  

contentType: "application/json; charset=utf-8",  

//Recent user photos  

url: 'https://api.instagram.com/v1/users/' + instagramaccessid + '/media/recent?access_token=' + instagramaccesstoken,  

//Most popular photos  

//url: "https://api.instagram.com/v1/media/popular?access_token=" + instagramaccesstoken,  

//For most recent pictures from a specific location:  

//url:  "https://api.instagram.com/v1/media/search?lat=[LAT]&lng=[LNG]&distance=[DST]?client_id=[ClientID]&access_token=[CODE]",  

//For min and max images  

//url: "https://api.instagram.com/v1/users/"+ userId+ "/media/recent/"+ "?access_token="+ token+ "&count=" + mediaCount+

 //"&max_id=" + mOldestId",  

//By Tags  

//url: "https://api.instagram.com/v1/tags/coffee/media/recent?client_id=[]&access_token=[]",  

//To get a user’s detail  

//url: "https://api.instagram.com/v1/users/usert_id/?access_token=youraccesstoken",  

dataType: "jsonp",  

cache: false,  

success: function (data) {  

if (data == "") {  

alert('NULL');

} else {

console.log("Login 성공");

console.log(data["data"]);

var str = "";

for (var i = 0; i < data["data"].length; i++) {

str += "<li style='float:left;list-style:none;'><a target='_blank' href='" + data.data[i].link + "'>

  <img src='" + data.data[i].images.thumbnail.url +"'></img></a></li>";

}

$('#PhotosUL').html(str);

App.instaWin.show();

//App.instaPanel.doLayout();

}  

}  

});

}

}


그래서 C# 예제!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

NameValueCollection parameters = new NameValueCollection();

//위의 코드에서 받은 access_token 값을 URL에 붙여 GET방식으로 넘겨 주면 됨 ( 내가 못하는건지 모르겠지만 POST방식은 실패...허허 인스타가 GET방식만 받는듯!!!)

string url = @"https://api.instagram.com/v1/users/" + Session["Id"].ToString() + "/media/recent?access_token="+ 토큰값;

WebRequest req = WebRequest.Create(url);

req.Method = "GET";

req.ContentType = "application/json; charset=utf-8";


HttpWebResponse response = (HttpWebResponse)req.GetResponse();

string myResponse = "";

using (System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream()))

{

myResponse = sr.ReadToEnd();

}


//json 형태로 받아서 어떤 데이터가 오는지 확인 후 필요한 데이터 뽑아 쓰면 끝!

var jsResult = (JObject)JsonConvert.DeserializeObject(myResponse);

instaImg.Src = jsResult["data"][0]["images"]["thumbnail"]["url"].ToString();

반응형

'API > C#' 카테고리의 다른 글

OpenXML Excel Read Uplo  (0) 2019.12.10
OpenXML Excel Write Download  (0) 2019.12.10
반응형

[Javascript]

function topNaviClick(obj) {

var tabId = $(obj).text();

  //Tree 모두 접기

App.TreePanel1.collapseAll();

       //Tree 전체 Node 가져오기

App.TreePanel1.getRootNode().cascadeBy(function (node) {                         

if (node.data.name == tabId) {

 //id로 node record 가져오기

var parentRecord = App.TreePanel1.getStore().getNodeById(node.id);

parentRecord.expand();

if (node.childNodes[0] != null) { 

var seletedRecord = App.TreePanel1.getStore().getNodeById(node.childNodes[0].id);

   //Tree 선택 ( 선택되어도 click event는 발생 안함 그래서 아래 .on 이벤트 사용 )

App.TreePanel1.getSelectionModel().select(seletedRecord);

}

App.TreePanel1.on('click', addTab());

}

});

}

반응형

'Ext.net > basic' 카테고리의 다른 글

Ext.net password vaildation  (0) 2018.04.30
Ext.net GridPanel toolTip 적용  (0) 2018.04.26
Ext.net Chart limit  (0) 2018.04.25
Ext.net Image 변경  (0) 2018.04.24
Ext.net Grid Panel Row 값  (0) 2018.04.20
반응형

[HTML]

<ext:TextField ID="PasswordField" Name="Pass" runat="server" FieldLabel="비밀번호" AllowBlank="false" InputType="Password" Regex="" EmptyText="비밀번호 8 ~ 12자리" AnchorHorizontal="100%" MsgTarget="Side" MinLength="8" MaxLength="12">

<Listeners>

<ValidityChange Handler="this.next().validate();" />

<Blur Handler="this.next().validate();" />

</Listeners>

</ext:TextField>

<ext:TextField Name="PassConfirm" runat="server" FieldLabel="비밀번호 확인" InputType="Password" Vtype="password" EmptyText="비밀번호 8 ~ 12자리" AnchorHorizontal="100%" MsgTarget="Side" VtypeText="입력된 비밀번호와 일치하지않습니다." MinLength="8" MaxLength="12">

<CustomConfig>

<ext:ConfigItem Name="initialPassField" Value="PasswordField" Mode="Value" />

</CustomConfig>

</ext:TextField>



[체크]

비밀번호 최소 4 최대 12자리

비밀번호, 비밀번호 확인 비교


반응형

'Ext.net > basic' 카테고리의 다른 글

Ext.net TreePanel 몇가지 기능  (0) 2018.05.02
Ext.net GridPanel toolTip 적용  (0) 2018.04.26
Ext.net Chart limit  (0) 2018.04.25
Ext.net Image 변경  (0) 2018.04.24
Ext.net Grid Panel Row 값  (0) 2018.04.20
반응형

*ToolTip 생성

[javascript 부분]

$(document).ready(function () {

var view = App.GridPanel1.getView();

var tip = Ext.create('Ext.tip.ToolTip', {

// The overall target element.

target: view.el,

// Each grid row causes its own separate show and hide.

delegate: '.x-grid-cell',

// Moving within the row should not hide the tip.

trackMouse: true,

// Render immediately so that tip.body can be referenced prior to the first show.

renderTo: Ext.getBody(),

listeners: {

// Change content dynamically depending on which element triggered the show.

beforeshow: function updateTipBody(tip) {

var store = App.GridPanel1.getStore();

var record = view.getRecord(view.findItemByChild(tip.triggerElement));

var column = view.getHeaderByCell(tip.triggerElement);

var data = record.get(column.dataIndex);

tip.update(data);

}

}

});

});

반응형

'Ext.net > basic' 카테고리의 다른 글

Ext.net TreePanel 몇가지 기능  (0) 2018.05.02
Ext.net password vaildation  (0) 2018.04.30
Ext.net Chart limit  (0) 2018.04.25
Ext.net Image 변경  (0) 2018.04.24
Ext.net Grid Panel Row 값  (0) 2018.04.20
반응형

[C#]

Double value = 81.15;


Math.Round(value, 2);


소수 두 번째 자리에서 반올림 ( 3이면 세 번째 자리겠쥬 )

반응형

'C# > basic' 카테고리의 다른 글

DataRowState 사용  (0) 2020.04.16
C# DataTable 사용법  (0) 2018.04.26
C# json 데이터 변환  (0) 2018.04.26
반응형

* DataTable 사용법

[C#]


DataTable dt = new DataTable("Data");


dt.Columns.Add("ID", typeof(int));

dt.Columns.Add("Name");

dt.Columns.Add("Average", typeof(float));

dt.Columns.Add("English", typeof(float));

dt.Columns.Add("Language", typeof(float));

dt.Columns.Add("Math", typeof(float));

dt.Columns.Add("Science", typeof(float));

dt.Columns.Add("Society", typeof(float));


DataRow dr = dt.NewRow();


dr["ID"] = 1;

dr["Name"] = "홍길동";

dr["Average"] = 81.8;

dr["English"] = 85;

dr["Language"] = 78;

dr["Math"] = 90;

dr["Science"] = 86;

dr["Society"] = 70;


dt.Rows.Add(dr);

반응형

'C# > basic' 카테고리의 다른 글

DataRowState 사용  (0) 2020.04.16
C# 소수점 반올림  (0) 2018.04.26
C# json 데이터 변환  (0) 2018.04.26
반응형

[C#]


using Newtonsoft.Json;

(Newtonsoft.dll 추가 하고 using 해줘야 함.)


데이터 : object obj = json;

(object로 받았지만 string으로 받아진다면 받아도 무관)


Dictionary<string, object> dic = (Dictionary<string, object>)JsonConvert.DeserializeObject(obj.ToString(), (typeof(Dictionary<string, object>)));

반응형

'C# > basic' 카테고리의 다른 글

DataRowState 사용  (0) 2020.04.16
C# 소수점 반올림  (0) 2018.04.26
C# DataTable 사용법  (0) 2018.04.26
반응형

# Chart 중 Limit 기능 ( example 위치 : chart > column > Limit


  //Javescript에서 호출하기위해 Namespace 추가

  [DirectMethod(Namespace = "ChartData")]

public void RowSelected(object obj)

{

     //Remove해주는 이유 : remove 안하면 limits 선으로 average 표시한거 처음 값 고정.. remove하고 데이터 넣어줘야 다시 그림.

Chart1.GetStore().RemoveAll();


Dictionary<string, object> dic = (Dictionary<string, object>)JsonConvert.DeserializeObject(obj.ToString(), (typeof(Dictionary<string, object>)));


var axis = Chart1.Axes[0] as NumericAxis;

var value = Math.Round(Convert.ToDouble(dic["Average"]), 2);

    //average 표시 부분

axis.Limits = new Limits

{

new AxisLimit

{

Value = value,

Line = new LimitSprite

{

LineDash = new int[] { 2, 2 },

StrokeStyle = "red",

Title = new Sprite

{

Text = "Average : " + value,

StrokeStyle = "red"

}

}

}

};


Chart1.GetStore().DataSource = new List<object[]>

{

new object[]{ "English", dic["English"] },

new object[]{ "Language", dic["Language"] },

new object[]{ "Math", dic["Math"] },

new object[]{ "Science", dic["Science"] },

new object[]{ "Society", dic["Society"] }

};

Chart1.GetStore().DataBind();

}

반응형

'Ext.net > basic' 카테고리의 다른 글

Ext.net password vaildation  (0) 2018.04.30
Ext.net GridPanel toolTip 적용  (0) 2018.04.26
Ext.net Image 변경  (0) 2018.04.24
Ext.net Grid Panel Row 값  (0) 2018.04.20
Ext.net Form submit  (0) 2018.04.20
반응형

DataView를 이용한 이미지 


데이터 : Store에 있음



[Html]

<Listeners>

<SelectionChange  Fn="selectionChanged" />

</Listeners>


[Javascript]

function selectionChanged(dv, nodes) {

if (nodes[0] != null) {

App.SelectedImg.setImageUrl(nodes[0].data.url);

}

};

반응형

'Ext.net > basic' 카테고리의 다른 글

Ext.net GridPanel toolTip 적용  (0) 2018.04.26
Ext.net Chart limit  (0) 2018.04.25
Ext.net Grid Panel Row 값  (0) 2018.04.20
Ext.net Form submit  (0) 2018.04.20
Ext.net Tab panel 추가  (0) 2018.04.20
반응형

*DirectEvent로 값 받아오기

[HTML 부분]

<ext:Button runat="server" Text="수정" Icon="BulletBlue">

<DirectEvents>

<Click OnEvent="Update">

<ExtraParams>

<ext:Parameter Name="Values" Value="App.GridPanel1.getRowsValues({selectedOnly:true})" Mode="Raw" />

</ExtraParams>

</Click>

</DirectEvents>

</ext:Button>


[C# 부분]

protected void Update(object sender, DirectEventArgs e)

{

string json = e.ExtraParams["Values"]; (ext:Parameter Name 값)

Dictionary<string, string>[] companies = JSON.Deserialize<Dictionary<string, string>[]>(json);


title.Text = companies[0]["Product"]; (row Column명)

content.Text = companies[0]["Price"];

Win1.Show();

}


* Javascript로 값 받아오기

[HTML 부분]

<Click Fn="Detail" /> ( 자바스크립트 Function 호출 방식 )


[Javascript 부분] ( JQuery 사용)

function Detail() {

var value = App.GridPanel1.getRowsValues({ selectedOnly: true });

$('#title1-inputEl').val(value[0].Product);

$('#content1-inputEl').val(value[0].Price);

}


* 선택된 Row 값 가져오기

[Javascript 부분]

App.GridPanel1.getSelectionModel().getSelection()[0].data




반응형

'Ext.net > basic' 카테고리의 다른 글

Ext.net Chart limit  (0) 2018.04.25
Ext.net Image 변경  (0) 2018.04.24
Ext.net Form submit  (0) 2018.04.20
Ext.net Tab panel 추가  (0) 2018.04.20
Ext.net Tree Panel 값 호출  (0) 2018.04.20
반응형

var frm = this.up('form').getForm();

            frm.submit({

                standardSubmit: true,

                url: "/main/main.aspx",

                method: "POST"

            });

반응형

'Ext.net > basic' 카테고리의 다른 글

Ext.net Chart limit  (0) 2018.04.25
Ext.net Image 변경  (0) 2018.04.24
Ext.net Grid Panel Row 값  (0) 2018.04.20
Ext.net Tab panel 추가  (0) 2018.04.20
Ext.net Tree Panel 값 호출  (0) 2018.04.20
반응형


* tab 추가

var tab = App.TabPanel1.add({

                                id: id,

                                title: id,

                                closable: true,

                                loader: {

                                    url: url,

                                    renderer: "frame",

                                    loadMask: {

                                        showMask: true,

                                        msg:"Loading"

                                    }

                                }

                 });


* 추가된 tab 선택 활성화

App.TabPanel1.setActiveTab(tab);

반응형

'Ext.net > basic' 카테고리의 다른 글

Ext.net Chart limit  (0) 2018.04.25
Ext.net Image 변경  (0) 2018.04.24
Ext.net Grid Panel Row 값  (0) 2018.04.20
Ext.net Form submit  (0) 2018.04.20
Ext.net Tree Panel 값 호출  (0) 2018.04.20
반응형

TreePanel 값 호출


* 선택된 노드의 이름

App.TreePanel1.getSelectionModel().getSelection()[0].data.name


* 선택된 노드의 자식 수 ( 자식이 없으면 null )

App.TreePanel1.getSelectionModel().getSelection()[0].data.children.length

반응형

'Ext.net > basic' 카테고리의 다른 글

Ext.net Chart limit  (0) 2018.04.25
Ext.net Image 변경  (0) 2018.04.24
Ext.net Grid Panel Row 값  (0) 2018.04.20
Ext.net Form submit  (0) 2018.04.20
Ext.net Tab panel 추가  (0) 2018.04.20
반응형


 <c:forEach var="${for문안에서 사용될 변수 이름}" items="${리스트이름}" varStatus="status">


   여기에 EL식으로 ${var에적힌변수이름.변수이름}


 </c:forEach>


// Status 는 forEach에 대한 정보를 얻을 수 있습니다.


${status.index}

- 0부터 시작하며 일반적은 Java에서 int i = 0; 했을 때 0을 의미합니다.

-> 각 데이터 마다의 인덱스 값을 나타냅니다.


${status.count}

- 1부터 시작하며 데이터의 갯수를 나타냅니다.


${status.current}

- 현재 for 문의 index에 해당하는 번호를 나타냅니다.


${status.first}

- 첫번째 루프인지 확인합니다.


${status.last}

- 마지막 루프인지 확인합니다.


${status.begin}

- for문의 시작값을 나타냅니다.


${status.end}

- for문의 마지막 값을 나타냅니다.


${status.step}

- for문의 증가값을 나타냅니다.





틀린 부분을 지적해주시면 감사합니다!


반응형
반응형


isNotEmpty

- 데이터 값이 empty(null)가 아닐 때 where seq =#seq# 쿼리를 추가 하겠다는 뜻.

- property에 VO 변수 이름을 넣어주세요.



당연히 isEmpty라는 것도 있겠죠? 다른 자세한 것은 검색 해보세요~

ibatis 동적쿼리로 검색하면 많은 자료를 얻을 수 있습니다.




반응형
반응형



 window.opener.location.href= "/test/controllerName";


위 코드는 Child window에서 요청한 후 Controller에서 진행 된 결과를 

parants window로 보여주게 합니다.



form 방식에서는

parantName 설정 : window.name="parantName";

formName.Target ="parantName";

formName.submit();


하시면 form전송 후 controller 결과는 parant window로 갑니다.




window.open("/test/excelUploadView.do", "excelUpload",

"width=500, height=300, top=200, left=200, location=no, location=0, toolbar=no, menubar=no, scrollbars=no, resizable=no, directories=no, directories=0, status=no");


window.opne 의 여러가지 속성 들입니다.


경로 다음 , "excelUpload" 는 새창의 이름입니다. 원하시는 이름으로 설정하시면 됩니다.


다른 속성들은 검색해주세요~ ^^ 




반응형
반응형



FK 설정할 때 위와 같이 Cascade를 선택을 안해주면 테이블 삭제가 안됩니다.


FK만들 때 Option 버튼 클릭 후 Cascade를 선택 해야 종속 삭제가 가능합니다.



반응형
반응형



1번 클릭 하셔서 전체 내용을 볼 수 있는 곳으로 이동합니다.


2번 ForeignKey가 되는 테이블 선택( Child Table select) 


3번 constraints를 선택하여 제약조건을 설정할 수 있는 곳으로 이동합니다.


4번 제약조건을 생성하는 버튼을 클릭해주세요.




1번 ForeignKey 설정한 제약조건 이름을 정해주세요.(보통 테이블 명_@ 이렇게 설정을해서..)


2번 ForeignKey가 될 Column을 선택 후


3번 버튼을 클릭하면 선택된 column이 오른쪽으로 이동합니다.


** ForeignKey에 체크되어있는지 확인하세요 ~ 오른쪽 윗부분 빨간줄입니다.




1번 Referenced Table .(parents Table)을 선택하는 곳 입니다.


2번 parents Table 될 Table을 선택합니다.


3번 ForeignKey에 참조 되는 column을 선택 후


4번 클릭하면 오른쪽으로 선택된 column이 이동합니다.




이제 OK를 누르면 끝입니다.



반응형

반응형

http://www.oracle.com 접속 해 주세요.




1 - > 2 순서로 이동해주세요.



 

자신의 컴퓨터 OS에 맞는 DB를 다운로드 하세요.

전 window7을 사용하기 때문에 window 버전으로 설명하겠습니다.


밑줄을 보시면 32-bit 와 x64(64bit) 있습니다. 자신의 OS bit에 맞게 선택해주세요.


File1, File2 모두 다운 받아주세요.




두 파일 드래그 하신 다음 마우스 우측 클릭 후 여기에 압축풀기를 선택하시면 자동으로

자신의 폴더에 맞는 곳에가서 압축이 풀리게 됩니다.( 따로 풀려면 폴더 찾아가서 풀어야되요.)




setup 파일을 실행 후 기다리면 위와 같은 화면이 나옵니다.


1번(다음버튼) 클릭하면 위와 같은 경고 메세지가 나옵니다. 2번(예) 눌려주시면 됩니다.






Oracle Base와 소프트웨어 위치 테이터베이스 파일 위치를 자동으로 경로 설정이 되지만

다른 곳에 설치하고 싶으면 바꾸셔도 됩니다. (지워진 경로부분은 개인사정으로 ^^;)


1번 : orcl  

2번 중요합니다. 여기에 입력한 비밀번호가 SYSTEM 비밀번호가 됩니다.

(Oracle 기준에 맞는 비밀번호 사용하라고 하지만 그냥 아무거나 해도 됩니다.)



설치가 완료 된 후 화면입니다.


1번 사이트에 접속하시고 아이디 : SYSTEM / 위에서 설정한 비밀번호 입력하시면 됩니다.

(Oracle에서 제공하는 DB관리하는 곳인 것 같은데 저도 잘 모르겠네요..)


2번 비밀번호관리에서 SCOTT 계정의 잠금을 풀어주세요~(체크표시 풀고 비밀번호만 주면 끝)


3번! 확인 누르면 끝입니다.



SQL Plus 접속.

- 비밀번호는 설치 때 입력한 비밀번호입니다.-




반응형