javascript для выбора элемента с помощью элемента управления asp.net ListView - PullRequest
0 голосов
/ 19 сентября 2010

Я пытаюсь реализовать событие onclick для выбора элемента в asp: ListViewControl.

 <ItemTemplate>
        <tr runat="server" id="MemberRow" onclick='<%#ClientScript.GetPostBackClientHyperlink(LvMembers, string.Format("Select${0}", Container.DataItemIndex)) %>'>
            <td>
                <asp:Literal runat="server" ID="LtlMembershipNumber" Text='<%#Eval("MembershipNo") %>' />
            </td>
            <td>
                <asp:Literal runat="server" ID="LtlName" Text='<%#Eval("FullName") %>' />
            </td>
            <td>
                <asp:Literal runat="server" ID="LtlCompany" Text='<%#Eval("Company") %>' />
            </td>
            <td>
                <asp:Literal runat="server" ID="LtlNotes" Text='<%#Eval("Notes") %>' />
            </td>
            <td runat="server">
                <asp:Literal runat="server" ID="LtlMobile" Text='<%#Eval("MobilePhone") %>' /><asp:LinkButton
                    runat="server" ID="lnl1" CommandName="Select" Text="test" />
            </td>
        </tr>
    </ItemTemplate>

Страница загружается и связывается, как и ожидалось.Он также выводит HTML, который я ожидал бы.

<tr id="ContentPlaceHolder1_LvMembers_MemberRow_1" onclick="javascript:__doPostBack('ctl00$ContentPlaceHolder1$LvMembers','Select$1')">
        <td>
                10000018
            </td>
        <td>
                Axel Rose
            </td>
        <td>

            </td>
        <td>

            </td>
        <td>
                <a id="ContentPlaceHolder1_LvMembers_lnl1_1" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$LvMembers$ctrl1$lnl1','')">test</a>
            </td>
    </tr>

Однако при нажатии на кнопку не запускается событие ListView.Command или ListView.SelectedIndexChanging?Если я добавлю кнопку с CommandName = "Выбрать", она будет работать как положено?Данные POST одинаковы!

{__ EVENTTARGET = ctl00% 24ContentPlaceHolder1% 24LvMembers & __ EVENTARGUMENT = Выбрать% 245 & __ VIEWSTATE = ...}

1 Ответ

0 голосов
/ 19 сентября 2010

Вид ответил на это сам.Класс ListView не реализует интерфейс IPostBackEventHandler.

Это означает, что он не имеет метода RaisePostBackEvents и не принимает EventTarget.

Я перегрузил его для реализации этого интерфейса.

 public class ListViewEvent : ListView, IPostBackEventHandler
    {
        public void RaisePostBackEvent(string eventArgument)
        {
            if (!eventArgument.Contains("$"))
                return;

            string[] splitEventArgument = eventArgument.Split('$');

            switch (splitEventArgument[0])
            {
                case "Select":
                    {
                        SelectItem(Convert.ToInt32(splitEventArgument[1]));
                        break;
                    }
                default:
                    {
                        break;

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