我在 C# 的 Web 用户控件中填充了 Telerik RadGrid,它有一个客户端 OnRowClick 事件,该事件在我的用户控件客户端的 Javascript 中发生。这很好用。
我还有一个名为 ControlClick 的事件,它与我想在 Web 窗体上触发的用户控件相关联。ControlClick 在我的 UserControl 的 CodeBehind 中绑定到 OnControlClick,然后绑定到我的 Web 窗体中的用户控件。
OnRowClick 事件触发没有问题,但 ControlClick 事件永远不会触发,所以我从不进入我的 Web 窗体函数来处理单击 RadGrid 中的某些内容时的行为。
我不确定我是否错误地实现了我的事件,或者它是否与我已经将点击行为绑定到带有 RadControl 的东西的事实有关。有人有想法么?
干杯!
代码段
RadGrid 的东西:
<rad:RadGrid ID="gridRequests" EnableViewState="true" runat="server" OnNeedDataSource="gridRequests_NeedDataSource" OnItemDataBound="gridRequests_DataBound">
<MasterTableView>
<Columns>
<!-- The Column Stuff -->
</Columns>
</MasterTableView>
<ClientSettings EnableRowHoverStyle="true">
<ClientEvents OnRowClick="RowClickEvent" />
</ClientSettings>
</rad:RadGrid>
在我的 UserControl 的 CodeBehind 中:
public event EventHandler ControlClick;
protected void OnControlClick(object sender, EventArgs e){
ControlClick(sender, e);
FilterId = Utils.NullSafeInt32(hdnFilterId.Value);
}
在我的主页标记中
<ft:UserControl ID="ftUserControlInstance" runat="server" SharePoint="false" Visible="true" OnControlClick="ControlClick"/>
在我的主页 CodeBehind 中:
public void DRFGetQueryStrings(object sender, EventArgs e)
{
Mobile_WebControls_UserControlInstance getControl = (Mobile_WebControls_UserControlInstance)ftUserControlInstance;
_filterId = getControl.FilterId;
ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "requestFulfillment()", true);
}
编辑:这是我的 RowClickEvent:
function RowClickEvent(sender, eventArgs) {
var filterId = eventArgs.getDataKeyValue('FilterID');
document.getElementById("<%=hdnFilterId.ClientID %>").value = filterId;
}