Есть ли способ сделать asp. net Boundfield ссылкой? - PullRequest
2 голосов
/ 29 апреля 2020

Извините, если раньше об этом спрашивали, но я довольно долго искал форумы и не смог найти решение своей проблемы.

В настоящее время я разрабатываю веб-приложение, в котором пользователи способны пожертвовать bottle депозит. Когда пользователи загрузили бутылки, они будут показаны в следующей таблице: Фрагмент таблицы

Данные отображаются в виде таблицы с SqlDataSource. Код:

<div class="table-responsive col-8">
                <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:WeCANConnectionString %>"
                    SelectCommand="SELECT [creator], [amount], [details], 
                    [imageurl], [pickup], [available_from] FROM [deposit] ORDER BY [id] DESC"></asp:SqlDataSource>
                <asp:GridView id="GridView1" class="table table-hover table-striped table-bordered" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
                    <Columns>
                        <asp:BoundField DataField="creator" HeaderText="Uploaded By" SortExpression="creator" />
                        <asp:BoundField DataField="amount" HeaderText="Amount" SortExpression="amount" />
                        <asp:BoundField DataField="details" HeaderText="Details" SortExpression="details" />
                        <asp:BoundField DataField="imageurl" HeaderText="Image" SortExpression="imageurl" />
                        <asp:BoundField DataField="pickup" HeaderText="Location of the bottles" SortExpression="pickup" />
                        <asp:BoundField DataField="available_from" HeaderText="Available from" SortExpression="available_from" />
                    </Columns>

                </asp:GridView>

Я хотел бы иметь возможность щелкать по каждому отдельному сообщению и создавать динамические c страницы, на которых отображается больше данных из базы данных. Я где-то читал, что мне удалось создать эту страницу с идентификатором каждого поста, но я не смог найти ничего, что показывало бы, как оно работает.

Свободно задавать любые последующие вопросы. Это мой первый пост, так что я не уверен, что все уже освещено.

Заранее большое спасибо.

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Один из способов сделать это - создать ссылку в каждой строке. Во-первых, вам нужно добавить «id» к SELECT в вашем DataSource, чтобы данные были доступны в момент привязки таблицы.

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:WeCANConnectionString %>"
    SelectCommand="SELECT [id], [creator], [amount], [details], [imageurl], 
    [pickup], [available_from] FROM [deposit] ORDER BY [id] DESC">
</asp:SqlDataSource>

Затем в GridView создайте столбец шаблона с HyperLink, и NavigateUrl этого HyperLink открывает новую страницу с идентификатором в строке запроса. Если вы не хотите, чтобы идентификатор отображался в URL-адресе, вам может потребоваться каким-то образом его скрыть или использовать столбец GUID в базе данных для каждой записи. Пока вы можете определить это. Ваш NavigateUrl может быть любой страницей, которую вы хотите, но в этом примере я использовал DetailPage.aspx.

<asp:GridView id="GridView1" class="table table-hover table-striped table-bordered" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:HyperLink ID="DetailsLink" runat="server" 
                    NavigateUrl="DetailPage.aspx?id=<%# Eval("id")%>"
                    Text="Details" Target="_blank">
                </asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="creator" HeaderText="Uploaded By" SortExpression="creator" />
        <asp:BoundField DataField="amount" HeaderText="Amount" SortExpression="amount" />
        <asp:BoundField DataField="details" HeaderText="Details" SortExpression="details" />
        <asp:BoundField DataField="imageurl" HeaderText="Image" SortExpression="imageurl" />
        <asp:BoundField DataField="pickup" HeaderText="Location of the bottles" SortExpression="pickup" />
        <asp:BoundField DataField="available_from" HeaderText="Available from" SortExpression="available_from" />
    </Columns>
</asp:GridView>

<@ # Eval ('id') @> будет отображать идентификатор для каждой строки как запрос строка в URL.

1 голос
/ 29 апреля 2020

Если я вас хорошо понимаю, вы можете использовать поле шаблона

  <asp:TemplateField>
                <ItemTemplate>
                    <asp:LinkButton Text="text" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...