Repeater 컨트롤 동적 변경 열(Header,Item,Foot)정보(재 구성 cs)

아침 에'Repeater 컨트롤 동적 변경 열(Header,Item,Foot)정보'를 공유 하 는데 동태 적 으로 열 을 변경 하 는 내용 입 니 다.
완전 동태 화 는 아니 지만 초기 에 원 하 는 효과 에 이 르 렀 다.만약 네가 조금 만 꼼꼼 하 다 면 쉽게 그것 을 꺼 낼 수 있 을 것 이다.현재 다른 편 을 엽 니 다.Insus.NET 은 다시 쓰 는 것 이 아니 라 cs 의 코드 를 재 구성 하려 고 합 니 다.앞의 코드 는 간단 하지만 코드 가 너무 많 기 때 문 입 니 다.재 구성 시작:먼저 이 다섯 개의 변 수 를 삭제 합 니 다.재 구성 과정 에서 이 다섯 개의 변 수 는 필요 하지 않 기 때 문 입 니 다.

// 5 , 5
decimal c1, c2, c3, c4, c5;
다음 에 변경 해 야 할 것 은 상수 선언 입 니 다.많은 곳 에서 사용 합 니 다.

const int dynamicColumns = 5;
프로그램의 아래 문장

objPrintLog.Months = 5; // 5
을 다음 과 같이 바 꿉 니 다.

objPrintLog.Months = dynamicColumns;
즉,상수 변 수 를 사용 하여 오래된 코드 의'5'를 대체 하 는 것 입 니 다.
다음은 Repwater 컨트롤 의 Header 코드 를 재 구성 합 니 다.비 교 를 위해 Insus.NET 은 이전 그림 을 여기에 참조 합 니 다.
 
재 구성 은 다음 과 같다.

protected void RepeaterLFMS_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
if (e.Item.FindControl("LabelH0") != null
&& e.Item.FindControl("LabelH1") != null
&& e.Item.FindControl("LabelH2") != null
&& e.Item.FindControl("LabelH3") != null
&& e.Item.FindControl("LabelH4") != null
&& e.Item.FindControl("LabelH5") != null)
{
for (int i = 0; i <= dynamicColumns; i++)
{
Label lh = (Label)e.Item.FindControl("LabelH" + i.ToString());
lh.Text = objDt.Columns[i].ColumnName;
}
}
}
비교 만 하면 변 코드 중의 코드 를 볼 수 있다.다음은 Repwater 컨트롤 Item 부분:
오래된 코드 재 구성 후의 코드,16 번 째 줄 코드 는 첫 번 째 열 을 판단 하 는 것 입 니 다.문자열 이기 때문에 단독으로 제외 합 니 다.23 번 째 줄 은 오래된 프로그램의 5 개의 변 수 를 ViewState 로 대체 합 니 다.

if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
if (e.Item.FindControl("LabelI0") != null
&& e.Item.FindControl("LabelI1") != null
&& e.Item.FindControl("LabelI2") != null
&& e.Item.FindControl("LabelI3") != null
&& e.Item.FindControl("LabelI4") != null
&& e.Item.FindControl("LabelI5") != null)
{

for (int j = 0; j <= dynamicColumns; j++)
{
Label li = (Label)e.Item.FindControl("LabelI" + j.ToString());

if (j == 0)
li.Text = drv[objDt.Columns[0].ColumnName].ToString();
else
{
decimal v = string.IsNullOrEmpty(drv[objDt.Columns[j].ColumnName].ToString()) ? 0 : Convert.ToDecimal(drv[objDt.Columns[j].ColumnName].ToString());
li.Text = v.ToString();

ViewState["c" + j.ToString()] = ViewState["c" + j.ToString()] == null ? 0 : Convert.ToDecimal(ViewState["c" + j.ToString()]) + v;
}
}
}
}
마지막 으로 Foot 의 재 구성:
Foot 재 구 성 된 코드 입 니 다.14 번 째 줄 은 첫 번 째 줄 인지,17 번 째 줄 인지 판단 하 는 것 입 니 다.ViewState 의 값 을 Label 에 부여 하 는 것 입 니 다.

if (e.Item.ItemType == ListItemType.Footer)
{
if (e.Item.FindControl("LabelF0") != null
&& e.Item.FindControl("LabelF1") != null
&& e.Item.FindControl("LabelF2") != null
&& e.Item.FindControl("LabelF3") != null
&& e.Item.FindControl("LabelF4") != null
&& e.Item.FindControl("LabelF5") != null)
{
for (int k = 0; k <= dynamicColumns; k++)
{
Label lf = (Label)e.Item.FindControl("LabelF" + k.ToString());

if (k == 0)
lf.Text = "Total";
else
lf.Text = ViewState["c" + k.ToString()] == null ? "0" : ViewState["c" + k.ToString()].ToString();
}
}
}
}
재 구성 은 프로그램 기능 의 요구 가 변 하지 않 는 상황 에서 불필요 한 코드 를 줄 이 는 것 이다.

좋은 웹페이지 즐겨찾기