我有一个radGrid,在列的ItemTemplate中定义了两个LinkButtons。
然后我在网格外面有两个不同的面板,必须根据哪个面板按下LinkButton进行更新。
例如,如果我按LinkButton1,则只能更新Panel1。如果我按LinkButton2,则只会更新Panel2。
问题是我无法访问Grid中的LinkButtons,因此在AjaxManager中,我设置了:
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" >
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="GrdBlogPost">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="Panel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
所以我设置为触发ajax回发的控件,整个网格,但我可以区分谁是触发事件的真正嵌套控件。
即使我明确地写了嵌套控件的ID:
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" >
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="LinkButton1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="Panel1" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="LinkButton2">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="Panel2" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
Panel1和Panel2都会更新,无论我是否点击了LinkButton1或LinkButton2(我认为它始终是容器,RadGrid,即触发事件的那个)
如何根据Grid中单击的嵌套控件来区分更新的控件?
您不能像这样引用网格中的链接按钮,网格内的任何内容都或多或少地无法通过服务器端代码和服务器控件访问。
您可以做的是将按钮功能提取到网格外部的隐藏按钮,然后使用网格链接按钮启动的JavaScript调用单击它们。我没有你的代码,所以这将是伪代码。
//grid template
<RadTemplateColumn>
<asp:LinkButton ID="LinkButton1" onclick="myFunction1(); return false;" />
</RadTemplateColumn>
//javascript
<script>
function myFunction1(){
$("#hdnButton1").click();
}
</script>
//hidden button
<telerik:RadButton style="display:none;" ID="hdnButton1" ClientIDMode="Static" OnClick="ServerMethod1" />
//ajax settings referencing hidden button now
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" >
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="hdnButton1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="Panel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>