Как определить строку, по которой щелкала ссылка LinkButton внутри ListView в ASP.Net C #? - PullRequest
0 голосов
/ 12 декабря 2018

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

Есть ли способ проверить, был ли LinkButtonщелкнул, и в какой строке в ListView он был нажат?

Я пытаюсь сделать это на моей странице aspx.cs вместо использования объекта DataSource на странице aspx.

Изменить: Вот код для моей страницы aspx.cs

protected void ServicesListView_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        int idValue;


            var backend = new ServicesBackend();

            switch (e.CommandName)
            {
                case "View":
                    idValue = Convert.ToInt32(e.CommandArgument);


                        var info = backend.GetOneService(idValue);

                        DescriptionTextBox.Text = info.Description;
                        HoursTextBox.Text = info.JobHours.ToString();
                        CommentsTextBox.Text = info.Comments;

                        DisplayServicePanel.Visible = true;
                    break;
            }
    }

К сожалению, идентификатор возвращается 0 каждый раз

Вот фрагмент из моей страницы aspx

<asp:LinkButton ID="ViewButton" CommandName="View" CommandArgument='<%# Item.ServiceId %>' runat="server" OnClick="ViewButton_Click" CssClass="btn btn-default" style="display: inline-block;">View</asp:LinkButton>

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы можете легко получить индекс предметов, используя NamingContainer.

protected void LinkButton1_Click(object sender, EventArgs e)
{
    //cast the sender back to a linkbutton
    LinkButton lb = sender as LinkButton;

    //get the current listview item from the linkbutton namingcontainer
    ListViewDataItem lvdi = lb.NamingContainer as ListViewDataItem;

    //get the item index from the listviewdataitem
    int index = lvdi.DataItemIndex;
}

aspx

<asp:ListView ID="ListView1" runat="server">
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
    </ItemTemplate>
</asp:ListView>
0 голосов
/ 12 декабря 2018

Пожалуйста, укажите конкретное имя класса для LinkButton, затем напишите некоторый код jquery / javascript, который будет срабатывать, когда кто-то щелкнет по этому конкретному классу, как показано в примере ниже.

<tr>
  <td>1</td>
  <td><a href="#" class="fa fa-fw fa-pie-chart linkbutton" data-row='1'></a></td>
  <td>2</td>
  <td><a href="#" class="fa fa-fw fa-pie-chart linkbutton" data-row='2'></a></td>
</tr>

 $(document).on('click','.linkbutton', function(){
 // you can get specific row data. all you need to do is to add this data to a custom 
 //data attribute and get data using jquery. 
  var rowData = $(this).attr('data-row');
  alert(rowData);
 console.log(rowData);
  });

Вы также можете проверить https://jsfiddle.net/5jun3aLs/5/

...