C # 버튼 클릭 이벤트가 발생하지 않습니다.

주권

몇 가지 유사한 질문을 보았지만 해결책 중 어느 것도 나를 위해 일하지 않았습니다. 테이블이 있고 다음과 같이 두 개의 버튼을 동적으로 추가하고 모든 버튼에 대해 하나의 공통 리스너를 원합니다.

Button b; //This is defined as a variable in class, not in a function 
...
...

void someFunction( . . . )
{
     foreach (DataRow row in table.Rows)
     {
          try
          {
               string starthour = row["starthour"].ToString(), endhour = row["endhour"].ToString(), day = row["day"].ToString(), building = row["building"].ToString(), room = row["room"].ToString();

                int start = Convert.ToInt32(starthour.Substring(0, starthour.Length - 2));
                int end = Convert.ToInt32(endhour.Substring(0, endhour.Length - 2));

                int startindex = getHourIndex(start);
                int endindex = getHourIndex(end);

               int dayindex = getDayIndex(day);

               for (int i = startindex; i < endindex; i++)
               {
                   b = new Button();
                   b.Text = subj + numb + " " + section;



                   Color clr = getCourseColor(subj + numb + section, courses);
                   b.BackColor = clr;
                   b.Enabled = true;

                   b.Click += new EventHandler(button_Click);
                   table_filter_instructor_schedule.Rows[i].Cells[dayindex].Controls.Add(b);

               }
         }
         catch (Exception)
         {

         }
    }
}

다음은 이벤트 핸들러입니다.

protected void button_Click(object sender, EventArgs e)
{

        Response.Redirect("Default.aspx");

}

그러나 문제는 ebent 핸들러 함수가 호출되지 않는다는 것입니다. 누구든지 이것으로 나를 도울 수 있습니까 *

감사

편집 : 다음은 페이지 모양이며 해당 버튼에 대한 리스너를 추가하고 싶습니다.

여기에 이미지 설명 입력

Markus

동적 컨트롤이 작동하고 이벤트도 발생 시키려면 페이지 수명주기의 초기에 다시 만들어야합니다 (Page_Init, Page_Load 이상). 컨트롤을 다시 만들고 이벤트 처리기를 연결할 때 동일한 ID를 할당하는 것이 중요합니다.

동적으로 생성 된 컨트롤을 사용하면 일반적으로 많은 복잡성이 추가되며 더 간단한 방법이 없는지 확인해야합니다. 함수에서 버튼은 데이터 테이블을 기반으로 생성됩니다. 따라서 동적으로 생성 된 버튼 대신 반복기를 사용하는 것이 좋은 방법 일 수 있습니다. 이를 통해 이벤트를 정적으로 연결할 수 있습니다.

컨트롤을 동적으로 만드는 방법에 대한 자세한 샘플은이 링크를 참조하십시오 . 그러나 가능한 경우 정적 접근 방식을 선호하는 것도 제안합니다.

기존 컨트롤은 종종 컨트롤을 동적으로 생성하여 얻을 수있는 기능을 제공 할 수 있습니다. 예를 들어, Repeater, DataList 및 RadioButtonList 컨트롤과 같은 컨트롤은 페이지가 실행될 때 동적으로 행 또는 기타 컨트롤 요소를 만들 수 있습니다.

귀하의 경우에 컨트롤을 동적으로 추가하지 않는 방법

귀하의 특정 경우 (이미지를 기반으로) 다음과 같은 정적 접근 방식을 제안합니다.

  1. 머리글 템플릿에 테이블 머리글, ItemTemplate의 행 및 FooterTemplate의 테이블 바닥 글을 만드는 반복기를 페이지에 추가합니다. ItemTemplate에 매일 단추를 추가합니다. 버튼에 이벤트를 연결합니다.
  2. 반복기에서 한 줄을 나타내는 데이터 클래스를 만듭니다 (예 : 매일의 시간 및 데이터).
  3. 데이터를 검색 할 때 데이터 클래스 목록으로 변환하고 repeater를 바인딩하십시오.
  4. repeater의 OnItemDataBound 이벤트를 처리하여 단추의 가시성을 조정하고 텍스트를 설정하십시오.

다음 샘플은 주요 부분을 보여줍니다 (3 일 동안 열만 추가했습니다).

연발총

이 반복기는 매우 기본적인 HTML 테이블을 만듭니다. 테이블 행의 버튼과 이벤트 핸들러의 정적 등록에 유의하십시오.

<asp:Repeater ID="rptTimeTable" runat="server" OnItemDataBound="rptTimeTable_ItemDataBound">
    <HeaderTemplate>
        <table>
            <thead>
                <tr>
                    <td>Time</td>
                    <td>Mon</td>
                    <td>Tue</td>
                    <td>Wed</td>
                </tr>
            </thead>
            <tbody>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td><%# Eval("Time", "{0:t}") %></td>
            <td>
                <asp:Button ID="btnMon" runat="server" OnClick="btn_ClickHandler" />
            </td>
            <td>
                <asp:Button ID="btnTue" runat="server" OnClick="btn_ClickHandler" />
            </td>
            <td>
                <asp:Button ID="btnWed" runat="server" OnClick="btn_ClickHandler" />
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
            </tbody>
        </table>
    </FooterTemplate>
</asp:Repeater>

데이터 클래스

데이터 클래스는 나중에 버튼에 넣는 각 버튼에 대한 텍스트를 저장합니다.

public class RepeaterData
{
    public DateTime Time { get; set; }
    public string MonText { get; set; }
    public string TueText { get; set; }
    public string WedText { get; set; }
}

데이터 바인딩

나는 이것을 Page_Load에 넣었지만 (PostBack이 아닌 경우에만) 원할 때마다 실행할 수 있습니다.

var data = new List<RepeaterData>();
data.Add(new RepeaterData() { Time = DateTime.Today.AddHours(9), MonText = "123", TueText = null, WedText = null });
data.Add(new RepeaterData() { Time = DateTime.Today.AddHours(10), MonText = null, TueText = "456", WedText = "789" });
data.Add(new RepeaterData() { Time = DateTime.Today.AddHours(11), MonText = null, TueText = null, WedText = null });
data.Add(new RepeaterData() { Time = DateTime.Today.AddHours(12), MonText = "123", TueText = null, WedText = null });
rptTimeTable.DataSource = data;
rptTimeTable.DataBind();

OnItemDataBound 핸들러

protected void rptTimeTable_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var data = (RepeaterData)e.Item.DataItem;
        SetButtonText(e.Item, "btnMon", data.MonText);
        SetButtonText(e.Item, "btnTue", data.TueText);
        SetButtonText(e.Item, "btnWed", data.WedText);
    }
}

private void SetButtonText(RepeaterItem repeaterItem, string btnId, string btnText)
{
    var btn = repeaterItem.FindControl(btnId) as Button;
    if (btn != null)
    {
        if (!string.IsNullOrEmpty(btnText))
            btn.Text = btnText;
        else
            btn.Visible = false;
    }
}

버튼 클릭 핸들러

protected void btn_ClickHandler(object sender, EventArgs e)
{
    // Do whatever you like
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

버튼 클릭 경고가 발생하지 않습니다.

분류에서Dev

클릭 이벤트를 발생시키지 않는 C # 동적 버튼

분류에서Dev

Backbone.js / Handlebars 버튼 클릭 이벤트가 발생하지 않음

분류에서Dev

Svelte 스크립트 버그 : 스위치 요소 클릭 이벤트가 발생하지 않습니다.

분류에서Dev

CKEditor의 클릭 이벤트가 발생하지 않습니다.

분류에서Dev

분할 된 버튼의 캐럿을 클릭해도 클릭 이벤트가 트리거되지 않습니다.

분류에서Dev

폴리머 종이 아이콘 버튼에서 클릭 이벤트가 발생하지 않음

분류에서Dev

버튼을 클릭하면 다른 버튼이 클릭되지 않습니다.

분류에서Dev

버튼 클릭 이벤트가 트리거되지 않음

분류에서Dev

C #에서 다른 버튼을 클릭 할 때 버튼 클릭 이벤트를 호출하는 방법

분류에서Dev

그리드 템플릿으로 Windows 스토어 앱 버튼 클릭 이벤트가 발생하지 않음

분류에서Dev

jquery 라디오 버튼이 첫 번째 클릭에서 이벤트를 발생시키지 않습니다.

분류에서Dev

JQuery가 버튼의 클릭 이벤트를 처리하지 못했습니다.

분류에서Dev

타이머 이벤트가 버튼 클릭을 트리거하지 않습니다.

분류에서Dev

jQuery는 -some- 버튼 클릭 이벤트를 처리하지 않습니다.

분류에서Dev

Jquery 클릭 이벤트가 더 이상 버튼을 표시하지 않습니다.

분류에서Dev

Google지도 addListener가 입력 버튼 클릭 이벤트에 대해 작동하지 않습니다.

분류에서Dev

버튼 클릭시 검도 업로드 이벤트 제거가 작동하지 않습니다.

분류에서Dev

간단한 자바 스크립트 버튼 클릭 이벤트가 실행되지 않습니다.

분류에서Dev

함수에서 생성 된 React HTML 버튼이 클릭 이벤트를 등록하지 않습니다.

분류에서Dev

버튼 클릭 이벤트 내 페이지가 admin.aspx로 리디렉션되지 않습니다.

분류에서Dev

단일 클릭 이벤트를 발생시키지 않는 WPF 버튼

분류에서Dev

사용자 컨트롤에서 버튼 클릭 이벤트가 발생하지 않고 다른 사용자 컨트롤에서 동적으로 생성됨

분류에서Dev

onbeforeunload 이벤트가 브라우저 버튼 클릭시 발생하지 않지만 CMD + R / F5에서 작동합니다.

분류에서Dev

Kendo 버튼 (k- 버튼)이 클릭 이벤트에서 트리거되지 않습니다.

분류에서Dev

버튼 클릭 이벤트가 팝업 창에서 실행되지 않습니다.

분류에서Dev

버튼 클릭 이벤트를 발생시키지 않고 버튼 콘텐츠 내에서 ToggleSwitch 컨트롤을 클릭하는 방법

분류에서Dev

버튼 클릭의 ProgressDialog가 작동하지 않습니다.

분류에서Dev

Python / Selenium 버튼 클릭이 작동하지 않습니다.

Related 관련 기사

  1. 1

    버튼 클릭 경고가 발생하지 않습니다.

  2. 2

    클릭 이벤트를 발생시키지 않는 C # 동적 버튼

  3. 3

    Backbone.js / Handlebars 버튼 클릭 이벤트가 발생하지 않음

  4. 4

    Svelte 스크립트 버그 : 스위치 요소 클릭 이벤트가 발생하지 않습니다.

  5. 5

    CKEditor의 클릭 이벤트가 발생하지 않습니다.

  6. 6

    분할 된 버튼의 캐럿을 클릭해도 클릭 이벤트가 트리거되지 않습니다.

  7. 7

    폴리머 종이 아이콘 버튼에서 클릭 이벤트가 발생하지 않음

  8. 8

    버튼을 클릭하면 다른 버튼이 클릭되지 않습니다.

  9. 9

    버튼 클릭 이벤트가 트리거되지 않음

  10. 10

    C #에서 다른 버튼을 클릭 할 때 버튼 클릭 이벤트를 호출하는 방법

  11. 11

    그리드 템플릿으로 Windows 스토어 앱 버튼 클릭 이벤트가 발생하지 않음

  12. 12

    jquery 라디오 버튼이 첫 번째 클릭에서 이벤트를 발생시키지 않습니다.

  13. 13

    JQuery가 버튼의 클릭 이벤트를 처리하지 못했습니다.

  14. 14

    타이머 이벤트가 버튼 클릭을 트리거하지 않습니다.

  15. 15

    jQuery는 -some- 버튼 클릭 이벤트를 처리하지 않습니다.

  16. 16

    Jquery 클릭 이벤트가 더 이상 버튼을 표시하지 않습니다.

  17. 17

    Google지도 addListener가 입력 버튼 클릭 이벤트에 대해 작동하지 않습니다.

  18. 18

    버튼 클릭시 검도 업로드 이벤트 제거가 작동하지 않습니다.

  19. 19

    간단한 자바 스크립트 버튼 클릭 이벤트가 실행되지 않습니다.

  20. 20

    함수에서 생성 된 React HTML 버튼이 클릭 이벤트를 등록하지 않습니다.

  21. 21

    버튼 클릭 이벤트 내 페이지가 admin.aspx로 리디렉션되지 않습니다.

  22. 22

    단일 클릭 이벤트를 발생시키지 않는 WPF 버튼

  23. 23

    사용자 컨트롤에서 버튼 클릭 이벤트가 발생하지 않고 다른 사용자 컨트롤에서 동적으로 생성됨

  24. 24

    onbeforeunload 이벤트가 브라우저 버튼 클릭시 발생하지 않지만 CMD + R / F5에서 작동합니다.

  25. 25

    Kendo 버튼 (k- 버튼)이 클릭 이벤트에서 트리거되지 않습니다.

  26. 26

    버튼 클릭 이벤트가 팝업 창에서 실행되지 않습니다.

  27. 27

    버튼 클릭 이벤트를 발생시키지 않고 버튼 콘텐츠 내에서 ToggleSwitch 컨트롤을 클릭하는 방법

  28. 28

    버튼 클릭의 ProgressDialog가 작동하지 않습니다.

  29. 29

    Python / Selenium 버튼 클릭이 작동하지 않습니다.

뜨겁다태그

보관