Есть ли более чистый / более эффективный способ разделения строк для использования в gridview? - PullRequest
2 голосов
/ 09 февраля 2011

У меня есть сущность, которая привязана к моему сетевому виду и имеет строковое значение, подобное этому: '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 Ответ

3 голосов
/ 06 марта 2011

При условии, что вы явно привязываете данные только к повторителю:

<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('|').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...