관리 메뉴

why don't do your best

[FriendERP_WEB] 공지사항 정리 본문

Programming/C#

[FriendERP_WEB] 공지사항 정리

빅셔 2010. 9. 10. 13:52

◈그리드 페이지 추가하는 방법

 

그리드 페이지에 추가에 필요한 설정들을 메서드로 만들었습니다.

CM.SetGridUsePaging(LayoutEventArgs e)
CM.SetGridUsePaging(LayoutEventArgs e, int pageSize)

사용방법은

grid 의 InitializeLayout 이벤트에
protected void grid_InitializeLayout(object sender, LayoutEventArgs e)
{
e.Layout.Bands[0].DataKeyField = "itemcd";
// 페이지를 위해 유니크값을 가지고 있는 컬럼을 DataKeyField 로 선언
CM.SetGridUsePaging(e);
//기본적으로 pagesize는 100건. pagesize 조절하는 싶을때는 CM.SetGridUsePaging(e, pagesize);
}
grid 의 InitializeDataSource 이벤트에 데이타 바인딩하는부분을 넣어주면됩니다.

sample화면
/FERP/Common/Sample/GridPage.aspx

 

◈공통코드 DropDownList 데이타 바인딩

 

공통코드 DropDownList 데이타 바인딩을 쉽게 하기 위해서 메서드로 만들었습니다.

CM.BindDropDownListByCommonCode(ref DropDownList dropDownList, string codeKind)
CM.BindDropDownListByCommonCode(ref UltraGridColumn column, string codeKind)

바인딩할때 "전체" 같이 item을 넣고 싶은경우는
아래와 같이 인자에 true 값하고 text, value 값을 넣어주면됩니다.
(ref control, "codekind",true , "text", "value")

사용방법은
일반dropdownlist 는 Page_Load 에 아래 처럼 넣으주면되고
CM.BindDropDownListByCommonCode(ref dropDownList, "BI010");
CM.BindDropDownListByCommonCode(ref dropDownListAll, "BI010", true, "전체", "");

grid dropdownlist 는 grid의 PreRender 이벤트에 아래처럼 넣어주면됩니다.
UltraGridColumn column = grid.Columns.FromKey(columnName);
CM.BindDropDownListByCommonCode(ref column, "BI010", true, "전체", string.Empty);

sample화면
/FERP/Common/Sample/GridDropDownList.aspx

 

 

◈Table 컬럼자료형 변경

 

모든 테이블에 entrydt 컬럼의 자료형이 Varchar(14) => datetime으로 변경되었습니다.

(모든 쿼리문을 저장프로시저 사용으로 결정됐으니, 굳이 화면단에서 최종입력일시를 넘기지
말고 저장프로시저에서 Getdate() 함수 처리하도록 권장합니다.)

 

◈화면의 컨트롤 명명규칙(버튼,입력 상자)

 

버튼
검색 : ButtonSearch
입력 : ButtonInsert
저장 : ButtonSave
삭제 : ButtonDelete

-- 계속 추가 할 예정 ---

 

◈Transaction – sp 1개 호출 할 경우

 

트랜젝션 을 사용할경우
여러개의 sp를 한트랜젝션에서 호출할때에는 기존방식대로 하면되고

하나의 sp를 호출할때 트랜젝션을 걸고 싶을경우에는
CM.ExecuteNonQueryTran 를 사용하면 됩니다.

 

◈Transaction – 여러 건을  하나의 sp로 호출할 경우

 

여러건을 하나의 sp로 호출할 경우 트랜젝션 처리 메서드 만들었습니다.
( 예전에 실습교육할때 불량코드 입력 삭제하는 경우입니다.
입력, 삭제 할경우에 비지니스 로직쪽에서 트랜젝션걸어서 sp를 호출하는 부분을
메서드로 만들었습니다. )

CM.ExecuteNonQueryTran(string commandText, List listParameter, CommandType commandType)

파라미터로 sp명하고 ListDBParameter 를 List<> 로 묶어서 보내주면됩니다.
리턴값은 영향을 받은 row수가 리턴합니다.

불량코드등록에 insert , delete 하는 부분 보시면되요.

 

◈Site코드 DropDownList 데이터 바인딩

 

Site코드 DropDownList 데이타 바인딩을 쉽게 하기 위해서 메서드로 만들었습니다.

CM.BindDropDownListBySite(ref DropDownList dropDownList)
CM.BindDropDownListBySite(ref UltraGridColumn column)

바인딩할때 "전체" 같이 item을 넣고 싶은경우는
아래와 같이 인자에 true 값하고 text, value 값을 넣어주면됩니다.
(ref control,true , "text", "value")

사용방법은
일반dropdownlist 는 Page_Load 에 아래 처럼 넣으주면되고
CM.BindDropDownListBySite(ref dropDownList);
CM.BindDropDownListBySite(ref dropDownListAll, true, "전체", "");

grid dropdownlist 는 grid의 PreRender 이벤트에 아래처럼 넣어주면됩니다.
UltraGridColumn column = grid.Columns.FromKey(columnName);
CM.BindDropDownListBySite(ref column, true, "전체", string.Empty);

 

◈Microsoft ACE.OLEDB.12.0 공급자는 로컬 컴퓨터에 등록할수 없습니다.

 

Microsoft.ACE.OLEDB.12.0 공급자는 로컬 컴퓨터에 등록할 수 없습니다.

라는 메세지가 나오면

아래 url가셔서 설치파일 설치하면 됩니다.
http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891

 

◈페이지 사용시 그리드 수정

 

페이지를 사용하는 그리드는 EditGrid 모드로 사용할수 없습니다..

페이지를 사용하는 화면에서 데이타를 입력,수정,삭제 할 경우에는
공통코드등록 화면 방식처럼 하셔야 합니다.

 

◈웹개발 사용컨트롤 정리

 

----------------------------------------
Infragistics
----------------------------------------
UltraWebGrid
UltraWebTree
UltraWebTab
WebTextEdit
WebNumericEdit
WebCurrencyEdit
WebDateTimeEdit
WebImageButton
WebMaskEdit
WebPercentEdit
WebDateChooser

----------------------------------------
.Net
----------------------------------------
Label
TextBox(멀티라인)
DropDownList
CheckBox
CheckBoxList
RadioButton
RadioButtonList
HiddenField
FileUpload

 

◈그리드 행추가, 행삭제, 행복사 기능

 

그리드 displaylayout 에
RowSelectorsDefault="Yse" 속성 추가하고

아래 자바스크립트 함수 추가하면됩니다.

function grid_RowSelectorClickHandler(gridName, rowId, button) {
if (button == 0)
OnPopup(gridName, rowId, true, true, true);
}

OnPopup 메서드에 파라미터를 변경하면 추가, 삭제,복사 버튼을 숨길수 있습니다
- OnPopup(gridName, rowId, visible추가, visible삭제, visible복사)

 

◈전체삭제, 한건삭제

 

삭제를 할때 전체를 삭제하거나 한건을 삭제할 경우 필요한 팝업창 만들었습니다

function DeleteOne() {alert('Delete One');} // 한건삭제를 눌렀을때 호출하는 function

function DeleteAll() {alert('Delete All');} // 전체삭제를 눌렀을때 호출하는 function

function buttonDelete_Click(oButton, oEvent) {
var param = new Array();
param['returnValue'] = ''; //팝업창으로 부터 결과를 받을 변수
window.showModalDialog('../../Common/Form/Popup/DeleteConfirm.aspx', param, 'dialogWidth:300px;dialogHeight:60px;scrollbar:no;');

if (param['returnValue'] == 'all')
DeleteAll(); // 전체를 눌렀을때
else if (param['returnValue'] == 'one') {
DeleteOne(); // 한건을 눌렀을때
}
}

샘플화면 : http://localhost/FERP/Common/Sample/ConfirmDelete.aspx

 

◈각 테이블에 전표번호생성 DB 스칼라함수 사용바랍니다.

 

각 전표테이블등에 전표번호,작지번호,생산실적번호,수주번호 등등의 채번 할때 아래 스칼라함수를 사용바랍니다.

함수명 : ufs_getTableMaxNo

-- 사용방법 --

declare @ls_no nvarchar(14)
exec @ls_no = ufs_getTableMaxNo 'mktax01t','taxno','TK20091115'
select @ls_no

 

◈아이템 팝업 규격, 단위추가

 

팝업 컨트롤에 ItemSize, ItemUnit 속성이 추가되었습니다.

그리드에 아이템 팝업 컨트롤을 사용할때는
ItemCode, ItemName 은 AllowEditing="Yes"

규격과 단위는
ItemCode, ItemName 은 AllowEditing="No" 로 설정하면 됩니다.

 

◈자바스크립트 환율가지고오기, datatime 문자열반환

 

자바스크립트에서 DB에 있는 환율을 가져오는 경우가 많을거 같아서
자바스크립트 함수 만들었습니다.

var exchrate = ExchrateGateWay('1', 'KRW', '20100624');
이런식으로 사용하면됩니다.

첫번째 파라미터는 '1':월별, '2':일일환율 입니다.

datetime을 yyyyMMdd형식으로 변경하고 싶을때는
DateToString(date) 함수를 사용하면 됩니다.

 

◈그리드 check 박스 전체선택

 

그리드 체크 박스 컬럼에 헤더를 클릭했을때 전체선택을 하고 싶으면
체크박스를 하나 만들고 "position: absolute" 스타일을 줘서 컬럼헤더에 위치시키면 됩니다.

FERP/Common/Sample/GridCheckAll.aspx 에 샘플화면 만들었습니다.

위와같이 체크박스하나 만들어서 스타일에 top, left를 조절해서 헤더에 위치시키면됩니다.

 

◈전표번호생성

 

전표 번호를 생성할때 ufs_getTableMaxNo 를 사용했는데

비지니스로직 쪽에서 생성해야하는 경우가 있어서
번호 채번하는 함수를 만들었습니다.

public static string GetTableMaxNo(Database db, DbTransaction transaction, string tableName, string fieldName, string divString, DateTime date)

public static string GetTableMaxNo(Database db, DbTransaction transaction , string tableName, string fieldName, string divString, string date)

사용방법
CM.GetTableMaxNo(db, transaction, "mktax01t", "taxno", "TK", "20091115");

 

◈코드비하인드(.cs) 에서 자바스크립트 호출

 

코드비하인드(.cs) 에서 alert 창을 띄울때

ClientScriptManager csm = Page.ClientScript;
csm.RegisterClientScriptBlock(this.GetType(), "alert", CM.MakeScriptAlert(ex.Message));

이런방식을 사용했는데
CM 쪽에서 Page.ClientScript 를 가져오는 방법이 있었습니다.

앞으로는 위 방식말고 CM.RegisterScriptAlert 메서드를 호출하면됩니다.
ex) CM.RegisterScriptAlert(ex.Message);

alert창말고 자바스크립트 함수를 호출하고 싶을때는 CM.RegisterScript 메서트를 호출하면됩니다.
ex) CM.RegisterScript("buttonInsert_Click(null, null);");

 

◈생산예시테이블변경

 

기존 : mppln01t(생산예시) =>테이블은 있었으나 사용하지 않음
mppln04t(생산예시_설비) => 생산예시확정(설비) 에서 MRP연결시 Insert됨
mppln14t(생산예시_조립) => 생산예시확정(조립)에서 MRP연결시 Insert됨

변경 : mppln01t(생산예시) =>생산예시확정(설비/조립)에서 MRP연결시 Insert되도록함(테이블변경됨)
mppln04t =>삭제
mppln14t =>삭제

 

◈BindDropDownListByCommonCode, where 절 추가

 

dropdownlist 공통코드 바인딩할때 where절을 넣어서 바인딩하는 경우가 있어서
where 절을 넣을수 있게 수정했습니다.

BindDropDownListByCommonCode(ref DropDownList dropDownList, string codeKind, string whereclause)

BindDropDownListByCommonCode(ref DropDownList dropDownList, string codeKind, string whereclause, bool isAddAll, string text, string value)

whereclause 에 where 절을 넣으면 됩니다.

ex>

CM.BindDropDownListByCommonCode(ref dropDownListFormCode2, "PP010", " site = '1' and kind1 = '1' ", true, "전체", "");

 

◈월마감 가져오기

 

CM.GetClosingMonth()

메서드를 사용하시면 월마감(yyyyMM) 을 가져올수 있고

bool IsClosingMonth(string yyyyMM)
bool IsClosingMonth(DateTime dateTime)

메서드를 사용하면 특정날자가 월마감인지 여부를 알수있습니다.

월마감일경우가 true 입니다.

 

◈필수항목 글자색

 

입력 테이블에 필수 항목 표시

위와 같이 코드가 필수 항목일경우는 label의 CssClass 속성을 "th" 로 주면 됩니다.

 

◈Excel내보내기

 

protected override void Excel_Click(object sender, EventArgs e)
{
ExcelExport(grid);
}

protected override void Excel_Click(object sender, EventArgs e)
{
ExcelExport(grid, fileName);
}

요렇게 코딩하면 됩니다.

 

◈그리드 페이징 로직 변경

 

페이지를 사용하는 그리드에서 엑셀 출력시 전체 페이지가 출력되는게 아니라
해당페이지만 출력이 되서 페이지 로직을 변경했습니다.

지금까지는
그리드 InitializeLayout 이벤트에
CM.SetGridUsePaging(e, 100);
메서드를 넣었는데

지금부터는
Page_Load 이벤트에 !IsPostBack 에
CM.SetGridUsePaging(GridName);

넣어주세요...InitializeLayout 이벤트에는 SetGridUsePaging 제거해주세요..

 

◈개발시 세션문제

 

개발시 소스를 고치다보면 세션이 끊겨서 다시 로그인할경우가 있는데
개발편의를 위해서 세션이 끊기면 자동으로 세션을 다시 만들도록 수정했습니다.

web.config에
(add key="AutoLogin" value="10001/10001/kor"/) 가 추가되었는데 요것이 자동로그인 정보입니다.
이걸 지우면 예전처럼 동작합니다.

BaseFormDev 없애버렸습니다.

 

◈datatime 형식 문자형식으로 변경하는 메서드 추가

 

CM.DateTimeToString(object o)

CM.DateTimeToString(object o, string format)

DateChooser 값을 문자형식으로 변경할때 Convert.ToDateTime 을사용해서 변경했는데 위에 메서드를 사용하면 바로 변경할수
있습니다.

ex)
Convert.ToDateTime(dateChooserIodts.Value).ToString("yyyyMMdd")
-->
CM.DateTimeToString(dateChooserIodts.Value)

"yyyyMMdd" 외에 다른 형식으로 변경하고 싶은경우는
CM.DateTimeToString(dateChooserIodts.Value, "yyyyMM")

 

◈grid horizontalalign

 

그리드의 DataType이 숫자형일 경우에 자동으로 우측정렬 하고 format을 "###,###,###,###" 주게 했습니다.

DataType 이 datetime일 경우에는 중앙정렬을 하게 했습니다.

적용된 숫자 datatype
"System.Int16"
"System.Int32"
"System.Int64"
"System.UInt16"
"System.UInt32"
"System.UInt64"
"System.Single"
"System.Double"
"System.Decimal"

 

◈aspx에서 단가가져오기

 

자바스크립트에서 DB에 있는 단가를 가져오는 경우가 많을거 같아서
자바스크립트 함수 만들었습니다.

// kind:1-구매,2-외주,3-판매)
// buycd 매입(MM015)매출(SD040)구분 (1:국내, 2:로컬, 3:직수입)
function PriceGateWay(kind, customcd, itemcd, buycd, changedt, currency

var price = PriceGateWay('1', 'A035', 'DA61-10134A', '1', '20100802', 'KRW');
이런식으로 사용하면됩니다.

datetime을 yyyyMMdd형식으로 변경하고 싶을때는
DateToString(date) 함수를 사용하면 됩니다.

 

◈그리드 datetime일경우 포멧

 

그리드 컬럼의 dataType이 datetime 일경우
formmat을 안주면 기본적으로 yyyy-MM-dd로 나오도록 했습니다.

 

◈메뉴에서 해당화면 클릭후 화면 display 시...

 

현재는 대부분 화면에서 선택과 동시에 data를 자동 display하게 되어있는데, 이부분을 빈화면 만 띄워준후 조회조건을 받아
검색버튼을 클릭시에 해당 조간에 맞는 데이터를 보여줄 수 있도록 해야함.

 

◈sub total

 

그리드에 subtotal 기능이 없는거 같아서 (혹시 subtotal기능을 찾으시면 얘기좀 해주세요)
method 하나 만들었습니다.

public static DataTable SubTotal(DataTable dataTable, string pivotColumn, string[] sumColumn, string sumNameColumn)
pivotColumn : subtotal 기준이 되는 칼럼
sumColumn : 합계가 될 컬럼들
sumNameColumn : "subtotal" title 이 출력될 컬럼

위에 메서드를 사용하면 되고 사용예는
MMMR150 mmmr150 = new MMMR150();
grid.DataSource = CM.SubTotal(mmmr150.Select(parameter) ,"itemkindnm", new string[]{"qty", "amt"}, "iokind" );

MMMR150화면 참조 하시면됩니다.
subtotal 사용할때 그리드는 sort 기능 꺼주세요
(grid.DisplayLayout.AllowSortingDefault = Infragistics.WebUI.UltraWebGrid.AllowSorting.No;)

 

◈editgrid inset key 로 행추가

 

에디트 그리드 insert 키 눌르면 행추가 되도록했습니다.

행추가할때 추가로 작업할일이 있는경우는 ( 체크박스를 체크하거나 div칼럼에 "I" 를 넣던가 코드컬럼을 수정가능하게변경 등등)

그리드의 ClientSideEvents.AfterRowInsertHandler 이벤트를 사용해서 넣어주심 됩니다.

 

◈editgrid가 행추가 기능이 없을경우

 

EditGrid에 행추가 기능이 없을경우는
DsplayLayout 에 AllowAddNewDefault 를 NO 로 해주셔야 합니다.
안그어면 insert키 눌를때마다 행이 추가 됩니다.

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

[FriendERP_WEB]개발 표준  (0) 2010.09.10
FriendERP_WEB]색상관련  (0) 2010.09.09
[FriendERP_WEB] 경고메시지 찍기  (0) 2010.09.09
Comments