2013-03-26 3 views
0

나는 다음과 같은 데이터로 ASP.NET의 GridView를했습니다 :GridView에서 열을 활성화하는 방법?

enter image description here

행이 3 열에서 값을 기준으로 OnRowDataBound 비활성화됩니다.

의 GridView :

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
     onrowdatabound="GridView1_RowDataBound1"> 
     <Columns> 
      <asp:TemplateField HeaderText="Column1"> 
       <ItemTemplate> 
        <asp:HyperLink ID="hyperlink" runat="server" Text='<% #Eval("Dosage") %>' NavigateUrl='<% #Eval("Dosage") %>'></asp:HyperLink> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Column2"> 
       <ItemTemplate> 
        <asp:Label ID="Label2" runat="server" Text='<% #Eval("Drug") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Column3"> 
       <ItemTemplate> 
        <asp:Label ID="Label3" runat="server" Text='<% #Eval("Patient") %>' ></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Column4"> 
       <ItemTemplate> 
        <asp:Label ID="Label4" runat="server" Text='<% #Eval("Date") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

RowDataBound :

protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     Label a = e.Row.FindControl("Label3") as Label; 
     if (a.Text == "Sam") 
     { 
      e.Row.Enabled = false; 
      e.Row.Cells[0].Enabled = true; 
     } 
    } 
} 

그러나, 나는, 컬럼은 항상 가능합니다, 1 열해야 항상 클릭 할 수있는 하이퍼 링크.

셀을 가져 와서 사용하도록 설정했지만 작동하지 않습니다.

친절하게도 위의 문제에 대한 해결 방법을 알려주십시오.

+1

** 라벨 ** 컨트롤에 대해 사용 또는 사용 중지가 실제로 중요하지 않습니다. 현재 'e.Row.Enabled = false;'는 코드에서 쓸모가 없습니다. – Win

+0

내 열 1은 레이블 대신 하이퍼 링크입니다. 행을 비활성화하면 하이퍼 링크를 클릭 할 수 없습니다. – sams5817

답변

1

특정 셀을 활성화/비활성화하여이 작업을 수행 할 수 있습니다.

protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e) 
    { 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     Label a = e.Row.FindControl("Label3") as Label; 
     if (a.Text == "Sam") 
     { 

      e.Row.Cells[0].Enabled = true; 
      e.Row.Cells[1].Enabled = false; 
      e.Row.Cells[2].Enabled = false; 
      e.Row.Cells[3].Enabled = false; 

     } 
    } 
} 
관련 문제