更改嵌套在中继器中的网格视图的行数据中的标题文本

本文关键字:数据 标题 文本 视图 嵌套 中继器 网格 | 更新日期: 2023-09-27 18:34:22

我有一个嵌套在中继器内的网格视图,我想更改行数据绑定或通过的网格视图列的标题文本

 <HeaderTemplate>
<asp:Label runat="server" ID="lblMode" Text='<%# Eval("IsValidForPromoCode")%>'>
</asp:Label></HeaderTemplate>

以方便者为准。

.aspx页

<asp:Repeater ID="repRequest" runat="server" OnItemDataBound="repRequest_ItemDataBound">
                                <ItemTemplate>
                                    <table style="width: 100%; font-weight: bold;" cellpadding="5" cellspacing="0">
                                        <tr>
                                            <td colspan="12" align="right">
                                                <a id="aSetPreference" runat="server" href="#">Attached Document(s)-</a>
                                                <asp:Label ID="lblDocumentCount" CssClass="redFont" runat="server"></asp:Label>
                                            </td>
                                        </tr>
                                        <tr>
                                            <td align="left" class="gray-bg" style="width: 8%;">
                                                <b>Request#:</b>
                                            </td>
                                            <td style="width: 100px;">
                                                <span class="detail-info-color">
                                                    <%# Eval("RequestNumber")%></span>
                                            </td>
                                            <td align="left" class="gray-bg" style="width: 5%;">
                                                <asp:Label ID="lblreqDetID" runat="server" Visible="false" Text='<%# Bind("TravelDetailsID") %>'></asp:Label>
                                                <b>Date:</b>
                                            </td>
                                            <td align="left" class="gray-bg" style="width: 5%;">
                                                <b>Class:</b>
                                            </td>
                                            <td>
                                                <span class="detail-info-color">
                                                    <%# Eval("Class")%></span>
                                            </td>
                                        </tr>
                                        <tr>
                                            <td colspan="12">
                                                <asp:GridView ID="gvOption" CssClass="gridRow" runat="server" AutoGenerateColumns="False"
                                                    Width="100%" OnRowDataBound="gvOption_RowDataBound">
                                                    <Columns>
                                                        <asp:TemplateField HeaderText="#">
                                                            <ItemTemplate>
                                                                <%#Container.DataItemIndex+1 %>
                                                            </ItemTemplate>
                                                        </asp:TemplateField>
                                                        <asp:TemplateField HeaderText="Service Provider">
                                                            <ItemTemplate>
                                                                <asp:Label ID="txtNumber" runat="server" Width="80px" Text='<%# Bind("Number") %>'></asp:Label>
                                                            </ItemTemplate>
                                                        </asp:TemplateField>
                                                        <asp:TemplateField>
                                                            <HeaderTemplate>                                                                
                                                                <asp:Label runat="server" ID="lblMode" Text='<%# Eval("IsValidForPromoCode") %>'></asp:Label></HeaderTemplate>
                                                            <ItemTemplate>
                                                                <asp:Label ID="txtName" runat="server" Width="100px" Text='<%# Bind("Name") %>'></asp:Label>
                                                                <asp:Label ID="lblOptionID" Visible="false" runat="server" Width="100px" Text='<%# Bind("optionID") %>'></asp:Label>
                                                            </ItemTemplate>
                                                        </asp:TemplateField>                                                            
                                                    </Columns>
                                                </asp:GridView>
                                            </td>
                                        </tr>
                                    </table>
                                </ItemTemplate>
                            </asp:Repeater>

代码隐藏

 protected void gvOption_RowDataBound(object sender, GridViewRowEventArgs e)
{
    try
    {
        GridView gvOption = (GridView)sender;
        if (e.Row.RowType == DataControlRowType.DataRow)
        {               
            gvOption.Columns[1].HeaderText = "Last Name";               
        }
        if (e.Row.RowType == DataControlRowType.Header)
        {
            gvOption.Columns[2].HeaderText = "Last Name";
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

无论我以哪种方式做,它都没有效果。请建议我缺少什么。

更改嵌套在中继器中的网格视图的行数据中的标题文本

试试这个:-

if (e.Row.RowType == DataControlRowType.Header)
{
    e.Row.Cells[1].Text  = "Last Name";               
}

在这里,我已经硬编码了您需要相应地更改它的Cells值。

更新:-
RowDataBound中找到控制:-

if (e.Row.RowType == DataControlRowType.DataRow)
{
    Label txtNumber = (Label)e.Row.FindControl("txtNumber");
    txtNumber.ForeColor = System.Drawing.Color.Red;
}