2013-03-26 3 views
0

У меня есть ASP.NET GridView со следующими данными:Как включить столбцы в GridView?

enter image description here

Ряды будет отключить OnRowDataBound на основе значения на колонка3.

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; 
     } 
    } 
} 

однако, я хочу column1 всегда включить гиперссылки в column1 должны всегда интерактивными.

Я попытался получить ячейки и включил его, но он не работает.

любезно сообщите, каково обходное решение проблемы выше.

+1

Включено или отключено не имеет значения для ** Обозначения **. В настоящее время 'e.Row.Enabled = false;' бесполезно в вашем коде. – Win

+0

Моя колонка 1 представляет собой HyperLink вместо ярлыка, отключить строку, потому что HyperLink не доступен для кликов – 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; 

     } 
    } 
} 
Смежные вопросы