IT정보

GridView의 이것저것...(2)

YUNOLAND 2009. 4. 28. 16:33

1. ViewState

ViewState["emp_no"] = Request.Params["emp_no"];

이런 식으로 Parameter로 넘어온 값을 저장해두고 어느 메서드에서든지 사용할 수 있다..

세션처럼 이용할 수 있을 줄 알았는데 자기 페이지를 벗어나면 사라진다..
그 이유는 Object 형태이기 때문이라고 한다..

2. 날짜 계산이다..

이번 프로젝트에서 이런게 있다..
날짜 컬럼이 있어서 과거의 어떤 날이 지정되어 있다...
그리고 새로운 컬럼을 만들어서(DB에 없는 새로 만드는 컬럼) 현재의 날짜에서 위에 말한 과거의 어떤 날짜를 뺀 값을 컬럼에 추가해서 표시해야 한다..
결국 난 하지 못해 과장님이 해주셨다..-_-;; ← 지못미 _ _...

ASPX
<asp:TemplateField HeaderText="経過日" SortExpression="passed_day">
    <ItemTemplate>
        <%# Eval("passed_day")%>
    </ItemTemplate>
</asp:TemplateField>

cs코드
DataColumn newCol = new DataColumn("passed_day", typeof(System.String));
pmSystemDataSet.ProjectManager.Columns.Add(newCol);

foreach (PMSystemDataSet.ProjectManagerRow row in pmSystemDataSet.ProjectManager)
{
    string displayDate = "";
    int years = -1, months = -1, days = -1;
    TimeSpanToDate(DateTime.Now,
        DateTime.Parse(row["last_visit_date"].ToString()), out years, out months, out days);
    if (years > 0)
    {
        displayDate = years.ToString() + "年";
    }

    if (months > 0)
    {
        displayDate += months.ToString() + "ヶ月";
    }
     
    if (days > 0)
    {
        displayDate += days.ToString() + "日";
    }
    row["passed_day"] = displayDate;
}

이 아이의 핵심은 TimeSpanToDate함수이다..
다섯개의 변수를 포함하고 있는데,
첫번째가 현재 날짜,
두번째가 감산할 날짜,
세번째부터 다섯번째의 변수가 계산이 되어서 output이 되는 아이들입니다..
순서대로 년, 월, 일

그래서 화면에 표시해줄 스트링형태를 지정해주면 끝!

3. 수정화면에서 디폴트로 변하는 텍스트박스 길이 조정..

이건 속성만 알면 끝인데 왜 쓰고 있는지도 모르겠다..

<asp:TemplateField HeaderText="プロジェクト顧客名" SortExpression="pj_company">
    <ItemTemplate>
        <%# Eval("pj_company")%>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:textbox id="pj_company_edit" 
         text='<%#Eval("pj_company")%>' width="80" runat="server"/>
    </EditItemTemplate>
 </asp:TemplateField>

중요한 건 수정화면으로 변경될 때 EditItemTemplate안에 있는 아이가 나타난다는 것이다..
그럼 그 안의 아이의 길이를 조절하면 끝남!