ICallbackEventHandler-->服务器回发事件

页面一定要继承ICallbackEventHandler接口,这个接口要实现RaiseCallbackEvent()方法:

一、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

}


二、 HTML代码:

<asp:Repeater runat="server" ID="rep_edit">
    <ItemTemplate>
        <tr class="row" οnclick="OnSelected_DataRow(this)" οnmοusemοve="OnMouseOver_DataRow(this)"
            οnmοuseοut="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>


 


三、 javascript脚本:

<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>


 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值