在ajaxified RadGrid中,我想要两个按钮来引发回发(绕过Ajax)并执行一些后端代码。这是我到目前为止所拥有的......
按钮(为简单起见,只显示一个):
<telerik:GridTemplateColumn HeaderText="Actions">
<ItemTemplate>
<asp:ImageButton ID="btnEdit" runat="server" OnClientClick="realPostBack();" ImageUrl="~/images/icon_edit.png" style="display: inline-block" ToolTip="Edit" CommandName="fbEdit" />
</ItemTemplate>
</telerik:GridTemplateColumn>
Javascript函数我用来禁用回发:
<script type="text/javascript">
function realPostBack(eventTarget, eventArgument) {
$find("<%= RadAjaxPanel1.ClientID %>").__doPostBack(eventTarget, eventArgument);
}
我想执行代码隐藏:
protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "fbEdit")
{
//grab variables from row's cells
string userID = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["UserID"];
string userName= e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["UserName"];
string userEmail = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["UserEmail"];
//DO SOME PROCESSING STUFF
}
if(e.CommandName == "fbDelete")
{
//delete record
}
}
所以回帖确实发生了,但我的代码永远不会发生。我猜这是因为事件与网格有关,而不是按钮“un-ajaxifying”,但我这样做是因为我需要捕获单击按钮的行中某些单元格的值。
也许我可以重做这个来使用onClick事件上的按钮,但我仍然需要捕获这些值。
有人可以帮忙吗?
答案 0 :(得分:1)
从你试图在RadGrid的OnItemCommand事件中执行代码的事物来看,但似乎你可能会让事情变得有些过于复杂。为什么不使用 GridButtonColumn ,将 ButtonType 设置为 ImageButton ,然后像上面那样设置相同的 CommandName ?只要您订阅了OnItemCommand事件,就应该触发所有要调用的内容,并且还应该检查e.CommandName == "fbEdit"
的条件检查。
有关如何使用此RadGrid特定列(以类似方式)的示例,您可以查看this demo。
答案 1 :(得分:1)
您需要在页面加载事件中添加以下代码。
if (!IsPostBack)
{
RadGridName.Rebind();
}
就是这样。