값을 얻기 위해 프로그래밍 방식으로 스타일에 액세스합니다

StackOverflow https://stackoverflow.com/questions/606943

  •  03-07-2019
  •  | 
  •  

문제

우리의 응용 프로그램에는 일반적인 색상 등을 정의 할 수있는 스타일 시트가 있습니다… 저장된 프로 시저에서 데이터 세트를 얻는 빠르고 더러운 기능을 작성하고 표시하고 싶지 않은 열을 꺼내어 프로그래밍 방식으로 생성 된 데이터 그 리드에 넣습니다. , 해당 DataGrid의 스타일을 설정 한 다음 Excel로 내보내십시오. 모두 Excel 출력의 색상을 좋아합니다 (Gasp! Datagrid 색상, Blah Blah Blah…).

내가 추가하고 싶은 마지막 작품은 프로그래밍 방식으로 스타일에 액세스하고 색상 코드 및 기타 항목 (.intranetgridhead)을 하드 코딩하는 대신 잡고 싶다는 것입니다. 이것이 제가 지금하고있는 일입니다.

int iHeaderColor = Convert.ToInt32 ("D0D7E8", 16);
DataGrid dg = new DataGrid();
dg.DataSource = dsReturnDataSet.Tables[0].DefaultView;
dg.DataBind();

dg.HeaderStyle.BackColor = System.Drawing.Color.FromArgb(iHeaderColor);
dg.HeaderStyle.Font.Bold = true;
dg.HeaderStyle.Font.Size = 10;

분명히 회사가 또 다른 "브랜드 변경"을 거치고 스타일 시트 값이 변경 될 때마다 Excel 색상이 자동으로 일치하고 큰 도움이됩니다 (뒷면 || 쿠키).

나보다 더 많이 아는 C# 사람들의 생각 (어느 쪽이 가장 당신이 될 것입니다…)?
감사,
남자 이름

도움이 되었습니까?

해결책

모든 web.ui.control 객체에는 .Styles 속성이 있으며 스타일로 액세스 할 수 있습니다 [ "이름"]. 따라서 다음을 수행 할 수 있습니다.

DataTable dt = LookupStyles();
dg.Styles.Clear();
foreach (DataRow dr in dt.Rows)
  dg.Styles.Add(dr["StyleName"].ToString(), dr["StyleValue"].ToString());

나는 몇 달 전에 비슷한 생각을 가졌다 :) 이것을 제대로 작동 시키려면, 당신의 그리드는 runat = "Server"여야합니다.

편집 : 그리드를 읽고 사용하려는 것처럼 보입니다. .CSSSTYLE과 스타일 시트 (.CSS)를 사용하는 경우 해당 CSS 파일로 이동하여 직접 구문 분석해야합니다.

다른 팁

CSS 파일을 직접 구문 분석해야하며 IIRC는 .NET 프레임 워크에 CSS 파일 파서가 없습니다. 그러나 여기에서 찾을 수있는 무료가 있습니다.

http://www.codeproject.com/kb/recipes/cssparser.aspx

그런 다음이를 사용하여 CSS 파일을 구문 분석 할 수 있어야합니다. 거기에서 스타일과 값을 얻고 데이터 그리드에 적용 할 수 있어야합니다.

나는이 줄을 따라 잠시 뒤를 썼다. CSS 파일을 다루기위한 httphandler, IIS 구성으로 변경하여 ASP.NET이 CSS 파일에 대한 요청을 수신하기위한 변경 및 색상 정의가 포함 된 간단한 XML 파일 구조가 포함되었습니다. 그러나 당신은 데이터베이스를 사용하여 그 일을했습니다.

그런 다음 CSS에서 나는 이런 무언가를 가지고있었습니다 ...

.button
{
    background-color: $colours:button-background-colour;
    color: $colours:button-text-colour;
}

내 XML과 함께 버튼 백 컬러 및 버튼 텍스트 색상의 값을 정의합니다. XML 파일의 관련 값으로 대체되는 CSS 파일을 처리하기 위해 정규 표현식 텍스트 교체를 사용했습니다.

나는 당신이 그 아이디어 중 일부를 가져 와서 기존 코드와 결합하여 원하는 효과를 얻을 수 있다고 확신합니다. 물론 캐싱 및 데이터베이스/XML 파일의 변경 사항을 처리해야합니다.

도움이되기를 바랍니다.

그 중 하나에 포인터가 필요한 경우 예제 코드를 파헤칠 수 있다고 확신합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top