<asp:TemplateField HeaderText="是否完成">
                        <ItemTemplate>
                            <%#Eval("PLAN_FINISH").ToString()=="0" ? "<font color=red> 否</font>" :"是"%>
                        </ItemTemplate>
                        <HeaderStyle HorizontalAlign="Center" />
                        <ItemStyle HorizontalAlign="Center" />
</asp:TemplateField><asp:TemplateField HeaderText="操作">
                        <ItemTemplate>
                            <asp:ImageButton ID="bntCommit" ImageUrl="~/Images/Commit.gif" runat="server" CommandName="commit"
                                CausesValidation="false" ToolTip="总结" CommandArgument='<%# Eval("PLAN_DID")%>' />&nbsp;
                            <asp:ImageButton ID="btnEdit" ImageUrl="~/Images/table_edit.png" runat="server" CommandName="ed"
                                CausesValidation="false" ToolTip="编辑" CommandArgument='<%# Eval("PLAN_ID")%>' />
                        </ItemTemplate>
                        <HeaderStyle HorizontalAlign="Center" Width="100px" />
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:TemplateField>我想判断当没有完成的时候,总结按钮显示,否则不显示
但是获取不到GridView单元格的值        protected void gvPlanDrill_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton imgBtnCommit = (ImageButton)e.Row.Cells[9].FindControl("bntCommit");                if (e.Row.Cells[8].Text== "未总结")
                {
                    imgBtnCommit.Visible = true;
                }
                else
                {
                   imgBtnCommit.Visible = false;
                }
            }
        }

解决方案 »

  1.   

    把显示那玩意换成个lable的,然后再找这个label
     <asp:TemplateField HeaderText="是否完成">
                            <ItemTemplate>
    <asp:label id="lbl_test" runat="server" />
                            </ItemTemplate>
                            <HeaderStyle HorizontalAlign="Center" />
                            <ItemStyle HorizontalAlign="Center" />
    </asp:TemplateField>Label label = (Label)e.Row.FindControl("lbl_test");
    if(label.Text == "")
    {
    }
      

  2.   


    可以不用Lable直接能获取到吗?
      

  3.   

    ImageButton imgBtnCommit = (ImageButton)e.Row.Cells[9].FindControl("bntCommit");
    你确定是不是在第9单元?
    如不知可用
     (ImageButton)e.Row.FindControl("bntCommit");
      

  4.   

    ImageButton imgBtnCommit =e.Row.FindControl("bntCommit") as ImageButton;
      

  5.   

     if (e.Row.Cells[8].Text== "未总结")————这里取不到值,总是为“”。
    {
            
    }
    不是找不到imgBtnCommit 
      

  6.   

    if (e.Row.Cells[8].Text== "未总结")————  确定是第8个吗?还有你开始绑定值了吗?
    在找找。如果没绑定开始值就是空的
      

  7.   

    你需要放置一个<asp:Label等,使用 FindControl("")去获取
      

  8.   


    看来只能放一个Lable了。其实我是想知道不放Lable怎么实现。。是不是有点钻牛角尖了,(*^__^*) 嘻嘻
      

  9.   

    可以使用以下方法解决此问题:
    即将Cell返回的控件强制转换为System.Web.UI.DataBoundLiteralControl类型,然后获取其Text属性
    ((System.Web.UI.DataBoundLiteralControl)gvReportResult.Rows[i].Cells[2].Controls[0]).Text.Trim());
      

  10.   

    是第八个的话,要用Cells[7] 啊
      

  11.   

    楼主是问,如何直接获取Cell里的文本值,不是要变通的解决方案,放控件在里面再获取当然知道了。
    有些热心的朋友不看清题意,就直接回答。