Как использовать результат запроса SqlDataSource (указанный в файле aspx) с ButtonField? - PullRequest
0 голосов
/ 02 мая 2019

Я указал SelectCommand в SqlDataSource (.aspx файл). Этот запрос SelectCommand вернет данные, которые будут показаны в GridView.

Теперь в команде выбора есть одно свойство с именем id (первичный ключ), данные которого НЕ будут отображаться на GridView, скорее я хочу отправить этот идентификатор на другую страницу, когда соответствующий ButtonField щелкнул.

Grid View Data

Изображение выше показывает GridView. Каждый столбец представляет поля активности, в то время как каждая строка представляет уникальную активность. В последнем столбце есть ButtonFields для регистрации активности.

Я хочу отправить студентов на Зарегистрироваться для занятия Страница вместе с идентификатором строки, по которой щелкнули. Имейте в виду, значение 'id' не отображается на GridView.

Пожалуйста, предложите мне хороший способ достичь этого.

Я думаю, что одним из решений может быть: доступ к значению 'id' в бэкэнд-файле (.cs) и затем отправка значения id с помощью команды ButtonField. но я не уверен, что к нему можно получить доступ в файле .cs?

ASPX код:

<asp:GridView ID="ShowActivitiesGridView" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField DataField="name" HeaderText="Name" SortExpression="name" />
                <asp:BoundField DataField="location" HeaderText="Location" SortExpression="location" />
                <asp:BoundField DataField="date_of_activity" HeaderText="Date of Activity" SortExpression="date_of_activity" />
                <asp:BoundField DataField="organization" HeaderText="Organization" SortExpression="organization" />
                <asp:BoundField DataField="no_of_student" HeaderText="No of Student" SortExpression="no_of_student" />
                <asp:BoundField DataField="description" HeaderText="Description" SortExpression="description" />
                <asp:ButtonField CommandName="RowCommand" HeaderText="Register For Activity" ShowHeader="True" Text="Register" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="SELECT [id], [name], [location], [date_of_activity], [organization], [no_of_student], [description] FROM [Activities]">
        </asp:SqlDataSource>

1 Ответ

1 голос
/ 02 мая 2019

Заменить ButtonField для ItemTemplate на aspx

    <asp:GridView ID="ShowActivitiesGridView" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField DataField="name" HeaderText="Name" SortExpression="name" />
                <asp:BoundField DataField="location" HeaderText="Location" SortExpression="location" />
                <asp:BoundField DataField="date_of_activity" HeaderText="Date of Activity" SortExpression="date_of_activity" />
                <asp:BoundField DataField="organization" HeaderText="Organization" SortExpression="organization" />
                <asp:BoundField DataField="no_of_student" HeaderText="No of Student" SortExpression="no_of_student" />
                <asp:BoundField DataField="description" HeaderText="Description" SortExpression="description" />
                <asp:ButtonField CommandName="RowCommand" HeaderText="Register For Activity" ShowHeader="True" Text="Register" />
                <asp:TemplateField HeaderText="Remove" ShowHeader="False">
                  <ItemTemplate>
                    <asp:LinkButton ID="btnRegisterActivity" runat="server" CausesValidation="false" Text="Register For Activity" CommandArgument='<%# Eval("id") %>' oncommand="btnRegisterActivity_Command" />
                  </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="SELECT [id], [name], [location], [date_of_activity], [organization], [no_of_student], [description] FROM [Activities]">
    </asp:SqlDataSource>

на странице cs файл

        protected void btnRegisterActivity_Command(object sender, CommandEventArgs e)
        {
            int myId = (int)e.CommandArgument;

            //Do whatever you want
        }
...