ICallbackEventHandler-->서버 리턴 이벤트

5240 단어
페이지는 반드시 ICallback EventHandler 인터페이스를 계승해야 합니다. 이 인터페이스는RaiseCallback Event () 방법을 실현해야 합니다.
1. C# 코드
public partial class CompCourseOrder_Edit : System.Web.UI.Page, ICallbackEventHandler
{
	protected void Page_Load(object sender, EventArgs e)
	{

	}
	
	//    
	private void BindingData()
	{
		List<CompCourseBooking> listBooking = BookingSRV.GetCompCourseBookingListByOrderID(HttpContextUtility.GetCurrentDataItemID());
		this.rep_edit.DataSource = listBooking;
		this.rep_edit.DataBind();

		foreach (RepeaterItem item in this.rep_edit.Items)
		{
			DropDownList ddlTeacher = item.FindControl("ddl_Teacher") as DropDownList;
			ddlTeacher.DataBind(listTeacher, t => t.NameEN, t => t.ID.ToString());
			ddlTeacher.Items.Insert(0, new ListItem("<-      ->", ""));
			ddlTeacher.Attributes["onchange"] = "onChangeBooking(" + item.ItemIndex + ");";

			GroupDownList gdlCenterRoom = item.FindControl("gdl_CenterRoom") as GroupDownList;
			gdlCenterRoom.OnClientChange = "onChangeBooking(" + item.ItemIndex + ");";
			gdlCenterRoom.DataSource = listRoom.Select(t => { return new { GroupTextField = t.CenterName, DataValueField = t.ID.ToString(), DataTextField = t.RoomName }; }).ToList();
			gdlCenterRoom.GroupTextField = "GroupTextField";
			gdlCenterRoom.DataTextField = "DataTextField";
			gdlCenterRoom.DataValueField = "DataValueField";
			gdlCenterRoom.DataBind();

			DatePicker dateBookingDate = item.FindControl("date_StartBookingDate") as DatePicker;
			dateBookingDate.OnClientChange = "onChangeBooking(" + item.ItemIndex + ");";
		}
	}

	#region     
	string returnValue = string.Empty;
	public string GetCallbackResult()
	{
		return this.returnValue;
	}
	public void RaiseCallbackEvent(string eventArgument)  //         
	{    
		this.returnValue = "ABCD";
	}
	#endregion

}


2. HTML 코드:
<asp:Repeater runat="server" ID="rep_edit">
    <ItemTemplate>
        <tr class="row" onclick="OnSelected_DataRow(this)" onmousemove="OnMouseOver_DataRow(this)"
            onmouseout="OnMouseOut_DataRow(this)">
            <td style="text-align: center">
                <%#Container.ItemIndex+1 %>
                <asp:HiddenField ID="txt_CompCourseBookingID" runat="server" Value='<%#Eval("td0")%>' />
            </td>
            <td>
                <%#Eval("td1")%>
            </td>
            <td style="text-align: center;">
                <span id="TimeRand_<%#Container.ItemIndex %>">
                    <%#Eval("td7")%></span>
            </td>
            <td style="text-align: center;">
                <%#Eval("td11")%>
            </td>
            <td>
                <span style="color: Red" id="rowValideInfo_<%#Container.ItemIndex %>">
                    <%#Eval("td9")%></span>
            </td>
        </tr>
    </ItemTemplate>
</asp:Repeater>

 
3. 자바스크립트:
<script language="javascript" type="text/javascript">
    function onChangeBooking(rowIndex) {
        var prefix = "<%=rep_edit.ClientID%>";
        var compCourseBookingID = document.getElementById(prefix + "_txt_CompCourseBookingID_" + rowIndex).value;
        var teacherID = document.getElementById(prefix + "_ddl_Teacher_" + rowIndex).value;
        var roomID = document.getElementById(prefix + "_gdl_CenterRoom_" + rowIndex).value;        
        var bookingDate = document.getElementById(prefix + "_date_StartBookingDate_" + rowIndex).value;
        if (bookingDate=="" || teacherID=="" || roomID=="")
        {
            return;
        }
        var args = compCourseBookingID+","+roomID +","+teacherID + "," + bookingDate;
        //alert(args);
        <%=this.Page.ClientScript.GetCallbackEventReference(this, "args", "getChildItemListCallBackOnClient", "rowIndex")%>;
    }
    function getChildItemListCallBackOnClient(resultValue, context) {
        document.getElementById("TimeRand_"+context).innerHTML=resultValue.split(';')[0];
        document.getElementById("rowValideInfo_"+context).innerHTML=resultValue.split(';')[1];
    }
</script>

 
 
 
 

좋은 웹페이지 즐겨찾기