#c# #asp.net
#c# #asp.net
Вопрос:
У меня есть вложенный gridview на моей странице. Первый используется как заголовок, поэтому здесь будет отображаться имя сегмента. Второй используется для отображения сведений о сегменте. Все работает отлично, за исключением того, что у меня возникли проблемы с оформлением первой сетки. Способ, которым я хочу отображать данные на этой странице, — это сведения о сегменте (разрыве строки)
Но он отображается в виде сведений о сегменте в одной строке. Как бы я сделал так, чтобы сетки отображались в двух строках, которые занимают всю ширину страницы. Вот как это настроено в настоящее время.
<asp:GridView ID="gvSegments" runat="server" AutoGenerateColumns="false" GridLines="None" Width="900px" OnRowDataBound="gvSegments_RowDataBound">
<Columns>
<asp:TemplateField ShowHeader="false">
<ControlStyle Width="140px" />
<ItemTemplate>
<asp:HiddenField ID="hfSegmentId" runat="server" Value='<%# Bind("SegmentId") %>' />
<asp:Label ID="lblSegmentDesc" runat="server" Text='<%# Bind("SegmentDesc") %>' Font-Bold="true" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="false">
<ItemTemplate>
<asp:GridView ID="gvSegmentDetails" runat="server" AutoGenerateColumns="false" GridLines="None" OnRowDataBound="gvSegmentDetails_RowDataBound" Font-Size="11px">
<Columns>
<asp:TemplateField ShowHeader="false">
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:CheckBox ID="chkAction" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Medium">
<ControlStyle Font-Size="11px" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:HiddenField ID="hfSegmentId" runat="server" Value='<%# Bind("SegmentId") %>' />
<asp:HiddenField ID="hfSegmentDetailId" runat="server" Value='<%# Bind("SegmentDetailId") %>' />
<asp:Label ID="lblMediaType" runat="server" Text='<%# Bind("MediaTypeDesc") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Cost per Piece">
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="lblCostPerPiece" runat="server" Text='<%# Bind("CostPerPiece") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="false">
<ItemTemplate>
<asp:LinkButton ID="lnkEditMedia" runat="server" Text="Details" OnClick="lnkEditMedia_Click" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Advertising Months">
<ControlStyle Font-Size="11px" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="lblAdvertisingMonths" runat="server" Text='<%# Bind("Months") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Budget">
<ControlStyle Width="70px" Font-Size="11px" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="txtBudget" runat="server" Text='<%# Bind("DropAmount", "{0:$###,###,##0.00}") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Total Quantity">
<ItemStyle HorizontalAlign="Center" />
<ControlStyle Width="50px" Font-Size="11px" />
<ItemTemplate>
<asp:Label ID="lblTotalQty" runat="server" Text='<%# Bind("DropQuantity") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Select Creative">
<ControlStyle Font-Size="11px" />
<ItemTemplate>
<asp:DropDownList ID="ddrCreative" runat="server" AppendDataBoundItems="true" OnSelectedIndexChanged="ddrCreative_SelectedChanged" AutoPostBack="true">
<asp:ListItem Value="-1" Text="Select One" Selected="True" />
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="false">
<ControlStyle Font-Size="11px" />
<ItemTemplate>
<asp:HiddenField ID="hfCreativeUrl" runat="server" />
<asp:HyperLink ID="hprCreativeUrl" runat="server" Target="_blank" Text="Click here" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="#a73e20" ForeColor="White" />
<AlternatingRowStyle BackColor="#E4E4E4" />
<RowStyle BackColor="#F7F7F7" />
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Ответ №1:
Один из способов сделать это (хотя, возможно, это не то, что вы ищете) — поместить оба вложенных GridView в тот же ItemTemplate, что и ваш другой первый столбец, с разрывом и / или горизонтальной линией или что-то в этом роде. Это может выглядеть примерно так:
<asp:GridView ID="gvSegments" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HiddenField />
<asp:Label />
<br />
<hr />
<asp:GridView />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Затем, чтобы строка охватывала все окно, вы можете просто добавить и ItemStyle к вашему TemplateField
<asp:TemplateField ItemStyle-Width="100%">
Комментарии:
1. Круто! Никогда даже не думал об этом. Спасибо Деррику. Это сработало.