是否有更清晰/更有效的方法来分割字符串以用于gridview?

时间:2011-02-09 10:16:25

标签: asp.net gridview string

我基本上有一个绑定到gridview的实体,并且有一个像这样的字符串值:'data1 | data2 | data3 | data4'。

有没有比我目前使用的方法更有效或更好的方法呢?

<asp:Repeater runat="server" ID="rptCentres">
<ItemTemplate>
    <h2><%#Eval("Centre.Name") %> ( <%#Eval("Entities.Count") %> )</h2>
    <asp:GridView runat="server" ID="dgShotlist" AutoGenerateColumns="false">
        <Columns>
        <asp:TemplateField>
            <itemtemplate>
                <p><%#Eval("ImageContainer.Title").ToString().Split('|')[0]%></p>
            </itemtemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <itemtemplate>
                <p><%#Eval("ImageContainer.Title").ToString().Split('|')[1]%></p>
            </itemtemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <itemtemplate>
                <p><%#Eval("ImageContainer.Title").ToString().Split('|')[2]%></p>
            </itemtemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <itemtemplate>
                <p><%#Eval("ImageContainer.Title").ToString().Split('|')[3]%></p>
            </itemtemplate>
        </asp:TemplateField>
      </Columns>
    </asp:GridView>
</ItemTemplate>
</asp:Repeater>

1 个答案:

答案 0 :(得分:3)

假设您仅将数据显式绑定到转发器:

<asp:Repeater runat="server" ID="rptCentres">
    <ItemTemplate>
        <h2><%# Eval("Centre.Name") %>(<%# Eval("Entities.Count") %>)</h2>
        <asp:GridView runat="server" 
            ID="dgShotlist" 
            AutoGenerateColumns="false" 
            DataSource=<%# ((string)Eval("ImageContainer.Title")).Split('|') %>>
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <p><%# Container.DataItem %></p>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </ItemTemplate>
</asp:Repeater>

在这里,我指定内部GridView的数据源作为由|符号拆分的标题,该符号应使用string[]类型((string)Eval("ImageContainer.Title")).Split('|')