Могу ли я вызвать функцию кода из события div onclick?

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

Ура ребята

Header Controls and stuff go here
    <div id="div_Footer" class="HoverEdit" title="Click To Edit" runat="server" onclick="EditDiv(div_Footer)">
        Footer Controls and stuff go here
    </div>

а затем в коде позади:

Sub EditDiv(ID_ofDiv As String)

    'Do some stuff to the controls on the page
    'Swapping tabs, showing /hiding controls etc.

End Sub
 wotney15 мая 2012 г., 10:49
Извините, ребята, я отредактировал свой пост, чтобы указать, что эти div, которые должны вызывать функцию, динамически создаются пользователем во время выполнения.
 coder15 мая 2012 г., 10:34
Можете ли вы показать нам код?
 CRice15 мая 2012 г., 10:51
взгляните на __doPostback
 Rango15 мая 2012 г., 10:38

Ответы на вопрос(3)

здание кнопки или кнопки ссылки и добавление к ней события щелчка. добавлятьStyle="Display:none;" и заставить Div для обратной передачи по нажатию кнопки, как.

<div id="div_Footer" class="HoverEdit" title="Click To Edit" runat="server" onclick="EditDiv(this)">
    Footer Controls and stuff go here
</div>
//Javascript
function EditDiv()
{
   // do your code
   __doPostBack('ButtonAID','')
}

Хорошее объяснение можно найти в статье ниже. ASP.NET постбэк с JavaScript

Решение Вопроса

поэтому мой пример на C #, но, возможно, он поможет вам начать работу. Вероятно, это не самый чистый способ реализовать это, но я попробую:

HTML

 <div id="div_Footer" class="HoverEdit" title="Click To Edit" runat="server" onclick="EditDiv(this)">
        Footer Controls and stuff go here
    </div>

Client

<script type="text/javascript">
function EditDiv(s,e){
var id = $(s).attr("id");
__doPostBack(id,id);
}
</script>

Server

private void Page_Load(object sender, EventArgs e)
{
   var arg = Request.Form["__EVENTTARGET"]; 'this will be empty on your first page request, but if the user click a div it will cause a postback to server, so this event will be fired again and will contain the div ID.

   if(arg != null)
   {
      string divID = (string)arg;
      'call your method with the argument.
   }
}

Более подробную информацию об этом можно найти здесь:

http://wiki.asp.net/page.aspx/1082/dopostback-function/

 05 нояб. 2012 г., 20:54
Спасибо за это решение. Мне удалось сделать что-то подобное, чтобы получить выбранный индекс строки внутри объекта ListView. Ты жжешь!
 06 нояб. 2012 г., 13:39
Всегда рады помочь людям!
 15 мая 2012 г., 11:27
Я снова обновил свой ответ и настроил его для ваших нужд.
 wotney15 мая 2012 г., 11:08
Приветствия Роб, Одна из моих проблем заключается в том, что пользователь может динамически добавлять эти элементы, поэтому я не могу предсказать загрузку страницы, если будет 1 элемент управления или сотня!

ссылка на сайт Написал @Tim Schmelter Я попытался следовать. Это замечательно:

Разметка:

<div id="div1" runat="server" style="height:100px;width:100px;">click me</div>

Код:

public class MyPage  
      Inherits System.Web.UI.Page
      Implements IPostBackEventHandler

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    div1.Attributes("onclick") = 
         Me.Page.ClientScript.GetPostBackEventReference(Me, "div1_clicki")
End Sub

Protected Sub Div1_Click()
    'do your stuff
    div1.InnerHtml="div1 clicked"
End Sub


'Private Members As IPostBackEventHandler
Public Sub RaisePostBackEvent1(ByVal eventArgument As String) Implements 
                    IPostBackEventHandler.RaisePostBackEvent
    If eventArgument = "div1_click" Then
            div1_click()
        End If
    End If
End Sub
 01 мая 2013 г., 00:37
Кажется, есть неудачная ошибка, когда пользователь нажимает на дочерний элемент внутри div, что приводит к тому, что событие теряет актуальность - страница обновляется, даже если я использую UpdatePanel, и событие никогда не запускается.

Ваш ответ на вопрос