2014-12-15 2 views
3

특정 드롭 다운 목록 항목이 선택된 경우 텍스트 상자를 편집 만 허용하려는 Gridview가 있습니다. 내 RowDataBound에서 값을 얻고 편집해야하는지 결정하지만 .Visible 특성이 예상대로 작동하지 않습니다. 샘플 데이터를 사용하면 첫 번째와 두 번째 행에는 열에 텍스트 상자가없고 세 번째 행에는 텍스트 상자가 있고 네 번째 행에는 다시는 열리지 않을 것으로 예상됩니다. 어떤 도움이라도 대단히 감사하겠습니다.Gridview RowDataBound 각 행에 대해 열 숨기기 표시

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     Control ctrl = e.Row.FindControl("ddlPriceTypeCode"); 

     if (ctrl != null) 
     { 
      DropDownList ddl = (DropDownList)ctrl; 
      if (ddl.SelectedValue == "UPRC-" || ddl.SelectedValue == "PLEV-0" || ddl.SelectedValue == "PLEV-1" || ddl.SelectedValue == "PLEV-2" || ddl.SelectedValue == "PLEV-3" || ddl.SelectedValue == "PLEV-4" || ddl.SelectedValue == "PLEV-5" || ddl.SelectedValue == "PLEV-6" || ddl.SelectedValue == "PLEV-7") 
      { 
       //GridView1.Columns[4].Visible = true; 
      } 
      else 
      { 
       //GridView1.Columns[4].Visible = false; 
      } 
     } 
    } 

답변

2

이렇게하면 전체 열을 숨기거나 표시합니다. RowDataBound은 모든 행에 대해 실행되므로 열의 가시성은 마지막 행의 드롭 다운 목록 값에 의해 제공됩니다.

당신은 숨기기/만 텍스트 상자를 보여 주면 다음과 같이해야 할 것 :

분명히, "txtID는"당신이/쇼를 숨길 TextBox의 ID입니다
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    Control ctrl = e.Row.FindControl("ddlPriceTypeCode"); 
    TextBot txt = (TextBox)e.Row.FindControl("txtID"); 

    if (ctrl != null) 
    { 
     DropDownList ddl = (DropDownList)ctrl; 
     if (ddl.SelectedValue == "UPRC-" || ddl.SelectedValue == "PLEV-0" || ddl.SelectedValue == "PLEV-1" || ddl.SelectedValue == "PLEV-2" || ddl.SelectedValue == "PLEV-3" || ddl.SelectedValue == "PLEV-4" || ddl.SelectedValue == "PLEV-5" || ddl.SelectedValue == "PLEV-6" || ddl.SelectedValue == "PLEV-7") 
      txt.Visible = true; 
     else 
      txt.Visible = false; 
    } 
} 

.

+0

완벽하게 감사드립니다. 나는 왜 내가 머리 속에 넣을 수 없는지 모르겠다. 나는 전체 컨트롤보다는 텍스트 박스를 목표로 삼아야했다. – joerdie

0

내가 아는 한,이 이벤트에서 선택한 항목을 선택하지 마십시오. 이 이벤트는 데이터 소스 속성이 컨트롤에 연결되면 시작됩니다. selectionChanged 이벤트에서 이것을 확인해야합니다.

관련 문제