2010-02-18 65 views
0

我正在全光照的GridView的RowDataBound事件做在GridView的列中的某些格式化。但是当我执行代码并使用即时窗口进行调试时,我在e.Row.Cells [1] .Text中没有找到任何东西。我从数据表填充gridview。它显示的记录,但我不知道为什么它没有得到rowdatabound。
以下是我结合行数据绑定问题

<asp:GridView runat="server" AutoGenerateColumns="False" 
         ID="gviewTemplate" onrowdatabound="gviewTemplate_RowDataBound" DataKeyNames="F1" 
         onrowcommand="gviewTemplate_RowCommand" 
         onrowediting="gviewTemplate_RowEditing" 
         onrowcancelingedit="gviewTemplate_RowCancelingEdit" 
         onrowupdating="gviewTemplate_RowUpdating"> 
         <Columns> 
          <asp:TemplateField> 
           <EditItemTemplate> 
            <asp:Label ID="lblID" runat="server" Text='<%# Bind("F1") %>'></asp:Label> 
           </EditItemTemplate> 
           <ItemTemplate> 
            <asp:Label Runat="server" Text='<%# Bind("F1") %>' ID="lblID1"></asp:Label> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Uploaded Image"> 
          <EditItemTemplate> 
           <asp:LinkButton Text="Reload" runat="server" CommandArgument='<%# Bind("F1") %>' CommandName="reload" ID="lbtnReloadImage"></asp:LinkButton> 
          </EditItemTemplate> 
           <ItemTemplate> 
            <asp:Label Runat="server" Text='<%# Eval("Uploaded") %>' ID="lblUploaded"></asp:Label> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Template Name"> 
           <ItemStyle VerticalAlign="Top" HorizontalAlign="Center" /> 
           <EditItemTemplate> 
            <asp:TextBox ID="txtTemplateName" Width="50" Runat="server" Text='<%# Eval("F2") %>'></asp:TextBox> 
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" Runat="server" 
            ErrorMessage="You must provide a Product Name." ControlToValidate="txtTemplateName">*</asp:RequiredFieldValidator> 
           </EditItemTemplate> 
           <ItemTemplate> 
            <asp:Label ID="lblTemplateName" runat="server" Text='<%# Eval("F2") %>'></asp:Label> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Heading"> 
           <ItemStyle VerticalAlign="Top" HorizontalAlign="Center" /> 
           <EditItemTemplate> 
            <asp:TextBox ID="txtHeading" Runat="server" Width="50" Text='<%# Eval("F3") %>'></asp:TextBox> 
            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" Runat="server" 
            ErrorMessage="You must provide a Product Name." ControlToValidate="txtHeading">*</asp:RequiredFieldValidator> 
           </EditItemTemplate> 
           <ItemTemplate> 
            <asp:Label ID="lblHeading" runat="server" Text='<%# Eval("F3") %>'></asp:Label> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField HeaderText="Coupon Text"> 
           <ItemStyle VerticalAlign="Top" HorizontalAlign="Center" /> 
           <EditItemTemplate> 
            <asp:TextBox ID="txtCouponText" Runat="server" Width="50" Text='<%# Bind("F4") %>'></asp:TextBox> 
            <asp:RequiredFieldValidator ID="RequiredFieldValidator3" Runat="server" 
            ErrorMessage="You must provide a Product Name." ControlToValidate="txtCouponText">*</asp:RequiredFieldValidator> 
           </EditItemTemplate> 
           <ItemTemplate> 
            <asp:Label Runat="server" Text='<%# Bind("F4") %>' ID="lblCouponText"></asp:Label> 
           </ItemTemplate> 
          </asp:TemplateField> 

代码,这就是我的RowDataBound正在做

protected void gviewTemplate_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
     if (e.Row.Cells[1].Text != e.Row.Cells[2].Text) 
     { 
      e.Row.BackColor = System.Drawing.Color.Red; 
     } 
} 

如果显示在网格中的记录,我不能明白为什么不能我得到它的RowDataBound

回答

0

因为使用网格模板字段,所以尽量调试并保持细胞,然后试图找到它里面的文本框,然后读取它的值

+0

但是我怎么cange单元格背景的颜色现在 – pankaj 2010-02-18 07:11:42

+0

你可以把一个cxontainer如表或面板模板内,然后应用在它的背面颜色 – 2010-02-18 07:15:34

+0

好,谢谢巨人,我要尝试,现在 – pankaj 2010-02-18 07:16:50

0

试试这个:
需要,因为行来检查行类型的数据绑定它还包括页眉,页脚以及

protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow & (e.Row.RowState == DataControlRowState.Normal | e.Row.RowState == DataControlRowState.Alternate)) { 
      //your code here 
     } 
    }