2017-09-13 51 views
1

我有一个GridView包含标签,我需要显示/隐藏基于数据的标签。如何在GridView中使用DataBinder.Eval?

这里是我的GridView:

<asp:GridView ID="GridView_Profiles" runat="server" CssClass="grid" HorizontalAlign="Center" 
             OnRowDataBound="GridView_Profiles_OnRowDataBound" CellSpacing="1" GridLines="None" 
             AutoGenerateColumns="False" Width="90%"> 
    <Columns> 
     <asp:Label ID="Label_SelectedCount" runat="server"> 
     <span style="width:auto;color:White;background-color:#0c95be;height:auto;margin:0px;font-size:12px;cursor:pointer;padding-left:10px;padding-right:10px;padding-top:5px;padding-bottom:5px;"> 
      <%#Eval("Count") %> 
     </span> 
     </asp:Label> 
    <asp:Label ID="lblNoCount" runat="server" Text="-"></asp:Label> 
    </Columns> 
</asp:GridView> 

在上面的GridView的RowDataBound我应该怎么检查使用DataBinder.Eval边界数据?

回答

0

使用它来获取标签中RowDataBound事件与DataBinder.Eval

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // find your label text in gridview with DataBinder.Eval 
     string count = DataBinder.Eval(e.Row.DataItem, "Count") as string; 

     // find your label control in gridview 
     Label lb = (Label)e.Row.FindControl("Label_SelectedCount"); 

     // check condition to show/hide label (you use your own condition) 
     if(count > 0) 
      lb.Visible = true; 
     else 
      lb.Visible = false; 

    } 
} 

或者你可以用DataBinder.Eval像绑定的GridView:

<asp:TemplateField HeaderText="Count" 
    <ItemTemplate> 
     <asp:Label ID="Label_SelectedCount" runat="server" > 
      <%# DataBinder.Eval(Container.DataItem, "Count")%> 
     </asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 

注:您也可以将数据绑定到标签的文本像这样的属性Text='<%#Eval("Count") %>'