Получить данные из RowCommand - PullRequest
9 голосов
/ 17 мая 2011

У меня есть сетка, которая показывает версии продукта и несколько кнопок ссылок, таких как редактирование, удаление, предварительный просмотр и т. Д. При нажатии кнопки редактирования я хочу получить идентификатор продукта и идентификатор версии и перенаправить на какой-то xyz *Страница 1002 * .aspx, на которой можно редактировать сведения о продукте.
Вот как выглядит моя таблица:

<asp:GridView ID="grdBindVersion" runat="server" AutoGenerateColumns="false" 
            onrowcommand="grdBindVersion_RowCommand" >



        <RowStyle BorderStyle="Solid" BorderWidth="1px" />
        <Columns>
            <asp:BoundField datafield="HistoryId"  HeaderText="Version ID.">
                        <HeaderStyle CssClass="grid"></HeaderStyle>
            </asp:BoundField>

            <asp:BoundField datafield="Title" HeaderText="Title">
                        <HeaderStyle CssClass="grid"></HeaderStyle>
            </asp:BoundField>

             <asp:TemplateField HeaderText = "Edit">
                   <ItemTemplate>

                       <asp:LinkButton ID="Edit" runat="server" CommandArgument='<%# Container.DataItem %>'  CommandName ="Add">Edit</asp:LinkButton>
                   </ItemTemplate>
              </asp:TemplateField>

              <asp:TemplateField HeaderText = "Delete">
                   <ItemTemplate>
                           <asp:LinkButton ID="Delete" runat="server">Delete</asp:LinkButton>
                   </ItemTemplate>
              </asp:TemplateField>

              <asp:TemplateField HeaderText = "Add Sub Page">
                   <ItemTemplate>
                            <asp:LinkButton ID="AddSubPage" runat="server">Add Sub Page</asp:LinkButton>
                   </ItemTemplate>
              </asp:TemplateField>

              <asp:TemplateField HeaderText = "Add Rank">
                   <ItemTemplate>
                            <asp:LinkButton ID="AddRank" runat="server">Add Rank</asp:LinkButton>
                   </ItemTemplate>
              </asp:TemplateField>

              <asp:TemplateField HeaderText = "Approve/DisApprove">
                   <ItemTemplate>
                           <asp:LinkButton ID="ApproveStatus" runat="server">Approve/DisApprove</asp:LinkButton>
                   </ItemTemplate>
              </asp:TemplateField>

              <asp:TemplateField HeaderText = "Complete">
                   <ItemTemplate>
                            <asp:LinkButton ID="Complete" runat="server">Complete</asp:LinkButton>
                   </ItemTemplate>
              </asp:TemplateField>

              <asp:TemplateField HeaderText = "Preview">
                   <ItemTemplate>
                            <asp:LinkButton ID="Preview" runat="server">Preview</asp:LinkButton>
                   </ItemTemplate>
              </asp:TemplateField>

              <asp:TemplateField HeaderText = "Comment">
                   <ItemTemplate>
                            <asp:LinkButton ID="Comment" runat="server">Comment</asp:LinkButton>
                   </ItemTemplate>
              </asp:TemplateField>

        </Columns>
        </asp:GridView>

Я отслеживаю нажатие на кнопку ссылки в событии RowCommand GridView.,Здесь я хочу получить VersionID и ProductID, а затем перенаправить на другую страницу.Пожалуйста, помогите мне.Я действительно плохо знаком с кодированием.Я немного поработал с Google, но ни одно из решений не помогло мне.

Ответы [ 4 ]

22 голосов
/ 17 мая 2011
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Edit")
    {
        GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
        // row contains current Clicked Gridview Row
        String VersionId = row.Cells[CellIndex].Text;
        .............
        .............
        //e.CommandArgument  -- this return Data Key Value
    }
}
4 голосов
/ 25 марта 2014

Вы можете назначить более одного назначения OnRowCommand Gridview ...

        <asp:TemplateField HeaderText="Feedback Form">
            <ItemTemplate>
                <asp:LinkButton runat="server" ID="lnkFB" Enabled="true" Text="CREATE"
                        CommandArgument='<%# Eval("ApprenticeshipID") + ";" + Eval("OrganisationID") + ";" + Eval("StudentID") %>' CommandName="btnFB" 
            </ItemTemplate>
            <HeaderStyle HorizontalAlign="Center" />
            <ItemStyle HorizontalAlign="Center" />
        </asp:TemplateField>

И в codebehind извлечь аргументы один за другим и назначить их переменным сеанса для дальнейшего использования ...

string[] arg = new string[2]; //say up to 3 arguments (ie: 0,1,2)
arg = e.CommandArgument.ToString().Split(';');
Session["ApprenticeshipID"] = arg[0]; //I only need first argument
GenerateFeedbackForm(Session["ApprenticeshipID"].ToString());
0 голосов
/ 17 мая 2011

Назначьте VersionID и ProductID как DataKeyNames GridView, а затем передайте эти два значения через строки запроса.

0 голосов
/ 17 мая 2011

Вы можете получить данные о событии gridview_RowCommand, поместив следующий код:

 Int32 HistoryId = Convert.ToInt32(e.Row.Cells[0].Text.ToString());

Вы можете установить [index] в Cells[index] в соответствии с элементами GridView, а затем перенаправить на другую страницу с помощьюкоторые загрузили HistoryId или ProductId.

...