Событие onclick кнопки ссылки внутри элемента управления Reapeator срабатывает во время привязки данных к элементу управления Reapeator. - PullRequest
2 голосов
/ 11 октября 2011

У меня есть Linkbutton внутри Repeater элемента управления. Мой код на странице aspx:

    <asp:LinkButton ID="lnkBtnOpenSuplmnt" runat="server"  
 Text= "OpensupLink"
 OnClientClick='<%# Eval("ClaimId", "return confirm(\"Reopen the assignment for claim {0} to issue a supplement?\")" ) %>'
    OnClick ='<%# lnk_OpenSupplement(Eval("ClaimId"))%>'> 
</asp:LinkButton>

Тогда по коду позади

protected string lnk_OpenSupplement(object profileId)
        {
            string retStr = "success";
                  .........
            return retStr;

        }

На странице загрузки:

  repeater.DataSource = recentAssignments;
                    repeater.DataBind();

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

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

BB

Ответы [ 3 ]

3 голосов
/ 11 октября 2011

Вы привязываете вывод этого метода к событию OnClick.

То есть вы говорите OnClick = "success", а это не то, чего вы ожидаете.

<%# something %> означает «Выполнить что-либо при связывании этого элемента и использовать возвращаемое значение здесь».

Я бы рекомендовал вам взглянуть на то, как связать аргументы команды с событием ItemCommand .

Вот несколько статей, которые описывают, как это сделать:

http://ondotnet.com/pub/a/dotnet/2003/03/03/repeater.html

http://www.asp.net/data-access/tutorials/custom-buttons-in-the-datalist-and-repeater-vb

После подключения события ваша кнопка станет:

 <asp:LinkButton ID="lnkBtnOpenSuplmnt" runat="server"  
      Text= "OpensupLink"
      OnClientClick='<%# Eval("ClaimId", "return confirm(\"Reopen the assignment for claim {0} to issue a supplement?\")" ) %>' 
      CommandName="MyCommand" 
      CommandArgument='<%# Eval("ClaimId") %>'>
</asp:LinkButton>
2 голосов
/ 11 октября 2011

Виновником является следующая строка:

OnClick ='<%# lnk_OpenSupplement(Eval("ClaimId"))%>'>

Тег <%# ... %> будет активирован во время привязки данных. По сути, код выполняет lnk_OpenSupplement для привязки данных и присваивает его возвращаемое значение OnClick.

2 голосов
/ 11 октября 2011

Я думаю, что тег <% # для OnClick оценивает функцию для привязки данных, попробуйте удалить ее и изменить на: </p>

  OnClick ='lnk_OpenSupplement'

Вам также нужно будет разработать «ClaimId» на стороне сервера, но вы должны быть в состоянии сделать это, используя стандартные аргументы события, которые будут переданы в lnk_OpenSupplement.

...