ASP GridView问题

时间:2011-05-27 11:18:34

标签: c# asp.net html

我正在为.net内置的网站开发前端开发,这是我第一次这样做,而且我在尝试更改表时遇到了麻烦。

输出我的表的代码是......

<asp:GridView ID="GV_Concepts" runat="server" AutoGenerateColumns="False" DataKeyNames="ConCatID"
    BorderStyle="None" GridLines="None" ShowHeader="False" BorderWidth="0px" CssClass="DashBoard_Concepts">
    <Columns>
        <asp:TemplateField HeaderText="Catalog">
            <ItemTemplate>
                <asp:Label ID="LB_Cata" runat="server" Text='<%# Bind("ConCatalog") %>'></asp:Label>
            </ItemTemplate>
            <HeaderStyle CssClass="col-b" />
        </asp:TemplateField>
        <asp:TemplateField HeaderText=" Concept Version" ItemStyle-Width="" ItemStyle-HorizontalAlign="Center">
            <ItemTemplate>
                <div class="conceptstd">
                    <asp:DataList ID="DataList1" runat="server" RepeatColumns="3" BorderStyle="None"
                        DataSource='<%# Bind("DS_Version")%>'>
                        <ItemTemplate>
                            <asp:HyperLink ID="HL_ConcLoc" runat="Server" CssClass="linkage" NavigateUrl='<%# Bind("FileName") %>'
                                Target="_blank" Text='<%# Bind("Ver") %>'></asp:HyperLink>
                            <asp:LinkButton ID="LB_remove" runat="server" CommandArgument='<%# Bind("ConceptID") %>'
                                OnClick="LB_removecon_Click" CssClass="link-btn">Remove</asp:LinkButton>
                            <asp:LinkButton ID="LB_sign" runat="server" CommandArgument='<%# Bind("ConceptID") %>'
                                OnClick="LB_signcon_Click" CssClass="sign-off-btn" Visible='<%# SignedCheck(DataBinder.Eval(Container.DataItem,"SignOff")) ?true:false %>'>Sign Off</asp:LinkButton>
                            <asp:Literal ID="Lit_SignedCon" Visible='<%# SignedCheck(DataBinder.Eval(Container.DataItem,"SignOff")) ?false:true %>'
                                runat="server"><b>Signed Off</b></asp:Literal>
                        </ItemTemplate>
                    </asp:DataList>
                </div>
            </ItemTemplate>
            <HeaderStyle CssClass="col-c" />
        </asp:TemplateField>
    </Columns>
    <EmptyDataTemplate>
        Currently no concepts
    </EmptyDataTemplate>
</asp:GridView>

这相当于html的东西也是类似的......

<table>
    <tr>
       <td></td>
       <td></td>
    </tr>
    <tr>
       <td></td>
       <td></td>
    </tr>
 </table>

但是我需要5列而不是2,我已经尝试了阅读语法,但我想也会问这里,谢谢你的帮助。

3 个答案:

答案 0 :(得分:1)

我不确定你的数据集是如何构建的,但你是否需要那个数据列表,或者你可以将控件放在GridView中自己的ItemTemplate中?这将为您提供5列:

<asp:GridView ID="GV_Concepts" runat="server" AutoGenerateColumns="False" DataKeyNames="ConCatID"
    BorderStyle="None" GridLines="None" ShowHeader="False" BorderWidth="0px" CssClass="DashBoard_Concepts">
    <Columns>
        <asp:TemplateField HeaderText="Catalog">
            <ItemTemplate>
                <asp:Label ID="LB_Cata" runat="server" Text='<%# Bind("ConCatalog") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:HyperLink ID="HL_ConcLoc" runat="Server" CssClass="linkage" NavigateUrl='<%# Bind("FileName") %>'
                    Target="_blank" Text='<%# Bind("Ver") %>'></asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton ID="LB_remove" runat="server" CommandArgument='<%# Bind("ConceptID") %>'
                    OnClick="LB_removecon_Click" CssClass="link-btn">Remove</asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton ID="LB_sign" runat="server" CommandArgument='<%# Bind("ConceptID") %>'
                    OnClick="LB_signcon_Click" CssClass="sign-off-btn" Visible='<%# SignedCheck(DataBinder.Eval(Container.DataItem,"SignOff")) ?true:false %>'>Sign Off</asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Literal ID="Lit_SignedCon" Visible='<%# SignedCheck(DataBinder.Eval(Container.DataItem,"SignOff")) ?false:true %>'
                    runat="server"><b>Signed Off</b></asp:Literal>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
    <EmptyDataTemplate>
        Currently no concepts
    </EmptyDataTemplate>
</asp:GridView>

当然,这会破坏您对数据源的绑定,但我不确定我是否可以准确地帮助您解决这个问题:(

答案 1 :(得分:0)

根据asp:templatefield自动生成列数 当你有两个templatefield时,将生成唯一的两列,以及数字 行取决于数据。

所以如果你需要5列,你必须在girdiview中放置5个templatefield

答案 2 :(得分:0)

为什么“需要”5列?布局?考虑到您要完成的任务,GridView可能不是正确的解决方案。生成内容的Repeater可以完成同样的事情吗?