2017-09-11 1 views
0

데이터베이스에서 "Completed"라는 제목의 열 값을 기반으로 셀의 텍스트 색을 변경하려는 asp gridview가 있지만 해당 열을 gridview에 포함하지 않으려합니다. 데이터베이스에 완료되지으로 양식이 표시되면 양식 # 텍스트 열 셀은 빨간색으로 표시됩니다 gridview에 표시되지 않는 열의 값을 기반으로 gridview에서 열 셀 텍스트를 수정할 수 있습니까?

부서

| 양식 # | 사용자 :

는 내가있는 gridview에 표시되는 세 개의 열을 원한다.

나는이는 다음과 같습니다 그래서이있는 gridview에 표시하지 않으려는 열 추가하여 이제 제대로 작동 한 : | 양식 # | 부 | 사용자가의 SqlDataSource에서

완료를 나는 쿼리가 있습니다

코드 숨김에서
Select User, Form, Dept, 
CASE Finished 
WHEN 'True' THEN (' ') 
WHEN 'False' THE ('!') 
END AS Finished FROM Test1 

:

  if (Completed == "True") 
      { 
       cell3.ForeColor = Color.Red; 
      } 

이 작동하지만 난있는 gridview에 표시 완료 됨이라는 제목의 칼럼을 원하지 않는다. 이것이 가능한가?

답변

1

자동 생성 된 열을 true로 설정하는 대신 GridView TemplateFields를 사용하십시오.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound"> 
    <Columns> 
     <asp:TemplateField HeaderText="User"> 
      <ItemTemplate> 
       <%# Eval("User") %> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Form"> 
      <ItemTemplate> 
       <%# Eval("Form") %> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Dept"> 
      <ItemTemplate> 
       <%# Eval("Dept") %> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

업데이트

OnRowDataBound 이벤트를 사용의 GridView에 바인딩 된 데이터의 값을 확인합니다.

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    //check if the row is a datarow 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //cast the dataitem back to a row 
     DataRowView row = e.Row.DataItem as DataRowView; 

     //check the value and set the backcolor 
     if (Convert.ToBoolean(row["Finished"]) == true) 
     { 
      e.Row.BackColor = Color.Red; 
     } 
    } 
} 
+0

난 그냥 그 시도하지만 내 대답을 업데이트 나는 그것이있는 gridview에 아니기 때문에 코드 숨김에서 값을 얻을 방법을 알아낼 수 없습니다 문제 ... –

+0

로 실행 보인다. – VDWWD

+0

아, 그게, 내가 추가 할 필요 : if (Convert.ToBoolean (row [ "Finished"]) == true). 팁 고마워! –