ASP.NET 페이지를 실행하는 동안 프로그래밍 방식으로 테이블 배경을 어떻게 설정합니까?

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

  •  22-07-2019
  •  | 
  •  

문제

기본값으로 배경색이 하나 인 ASPX 페이지가 있습니다. 라디오 버튼의 특정 옵션을 선택할 때 프로그래밍 방식으로 변경할 수 있어야합니다. 테이블의 ID 필드를 설정하려고 시도했지만 파일 뒤의 C# 코드에서 액세스 할 수없는 것 같습니다.

내 원래 테이블은 다음과 같습니다.

<table id="tblSheet" runat="server" style="border-color: #FF9900; border-style: solid; 
border-width:  thin; width:100%; background-color: #99ccff;" cellspacing="4" 
cellpadding="1">

그래도 INTERSENSE에서 신분증이 보이지 않습니다.

편집하다:
이제 내 코드에서 테이블을 볼 수 있으므로 실제로 배경색을 변경하려고합니다. 내 Radiobuttonlist의 코드는 다음과 같습니다.

<asp:RadioButtonList ID="rdoStatus" runat="server" AutoPostBack="true"
RepeatDirection="Horizontal" Visible="true"   
OnSelectedIndexChanged="rdoStatus_OnSelectionChanged">
<asp:ListItem Value="181001" Text="Open"/>
<asp:ListItem Value="181002" Text="Closed" />
<asp:ListItem Value="181003" Text="Pending" />
</asp:RadioButtonList>

이벤트 핸들러에서 설정 한 중단 점을 누르고 있지만 포스트 백에서는 배경색이 바뀌지 않습니다. 선택한 항목이 계류 중이면 배경색을 다른 것으로 변경하고 싶습니다. 라디오 버튼이 열리거나 닫히도록 변경하면 배경색이 기본값인지 확인하고 싶습니다.

편집 2 :
이벤트 핸들러의 코드는 매우 간단합니다.

if (rdoStatus.SelectedValue == "181003")
{
  tblSheet.BgColor = "#ff9a9a";
}
else
{
  tblSheet.BgColor = "#99ccff";
}
도움이 되었습니까?

해결책 3

나는 그것을 작동시켰다!
테이블을 다음으로 변경했습니다 (배경색을 제거했습니다).

<table id="tblSheet" runat="server" style="border-color: #FF9900; border-style: solid; 
border-width: thin; width:100%;" cellspacing="4" cellpadding="1">

그런 다음 내 코드 뒤에는 Page_load에서 배경색을 설정했습니다. ~ 아니다 포스트 백 :

tblSheet.Bgcolor = "#99ccff";

짜잔! Radiobuttonlist 및 이벤트 핸들러는 질문과 동일합니다. 포스트 백은 색상을 원본으로 다시 변경했습니다. 모두의 도움에 감사드립니다!

다른 팁

장소 runat="server" 테이블 태그에서

완료되면 프로그래밍 방식으로 테이블에 액세스 할 수 있습니다.

배경색을 직접 변경하려면 다음을 시도하십시오.

if (rdoStatus.SelectedValue == "181003")
    {
      tblSheet.Style.Add("background-color", "#ff9a9a");
    }
    else
    {
      tblSheet.Style.Add("background-color", "#99ccff");
    }

스타일 시트를 사용하는 경우 사용할 수 있습니다.

if (rdoStatus.SelectedValue == "181003")
{
  tblSheet.CssClass = "default_color"
}
else
{
  tblSheet.CssClass = "other color"
}

라디오 버튼에서 직접 변경할 포스트 백을 트리거하고 있습니까?
이 시점에서 이것이 바뀌는 유일한 것입니까?

이 두 가지에 대한 답이 "예"인 경우 대신 JavaScript 로이 모든 작업을 수행하고 Postback을 완전히 건너 뛰는 것을 고려해야합니다.

<input type="radio" value="..." name="..." id="..."
    onclick="document.getElementById('tblSheet').style.backgroundColor = '#99ccff';" />

여기서 추론은 포스트 백이 클라이언트의 모든 것을 유지하는 것과 비교할 때 엄청나게 느리기 때문에 웹 앱이 쉽게 확장 할 수있는 능력을 손상시킬 수 있습니다 (물론 서버에서 더 많은 작업은 확장 성이 좋지 않습니다). 따라서 사용자에게는 빠르고 서버의 작업이 적습니다.

그러나, 당신은 또한 조심해야합니다. 잃다 JavaScript가있는 사용자의 기능은 서버에서 작업 할 때 비활성화됩니다. 그러나이 Postback이 이미 라디오 버튼으로 트리거 된 경우 이미이 기능에 대한 JavaScript에 의존했습니다.

우선, runat = "Server"속성이 없기 때문에 테이블을 볼 수 없습니다. 테이블을 볼 수있는 테이블의 속성이 없으며, 둘째는 테이블을 볼 때도 테이블의 색상을 변경할 수 없습니다. 코드. 테이블의 속성에 액세스하고 색상을 설정하더라도 변경 사항을보기 위해 다시 게시해야하기 때문에 도움이되지 않습니다.

해야 할 일은 업데이트 패널을 사용하고 #FF9900 대신 변수를 사용하는 것입니다.이 방법으로 기본 색상은 빨간색이거나 색상이 무엇이든이면 체크 박스의 확인 이벤트에서 값을 녹색 또는 다른 색상으로 변경합니다.

Joel이 말했듯이 JavaScript는 색상을 변경 해야하는 경우 더 나은 솔루션이지만 테이블을 서버 컨트롤로 변환하는 경우 (테이블 또는 다른 서버 컨트롤에서 runat = 서버 사용) 임베디드 코드 블록을 사용하는 것을 잊지 마십시오. asp.net 이름 이름을 페이지를 렌더링 할 때 getElementById에서 테이블 ID를 검색하려면 테이블 ID를 검색합니다.

Joel의 예에서는 다음과 같습니다.

<input type="radio" value="..." name="..." id="..."    onclick="document.getElementById('<% =tblSheet.ClientID%>').style.backgroundColor = '#99ccff';" />
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top