We have a problem witch context menu in RadGrid. After downloading a file context menu is disappearing. Only refreshing the page can fix the menu.
Code example:
What can we do to fix it?
Nowicki Sebastian
Code example:
| <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="RadGridMenu._Default" %> |
| <%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml" > |
| <head runat="server"> |
| <title>Untitled Page</title> |
| </head> |
| <body> |
| <form id="form1" runat="server"> |
| <script type="text/javascript"> |
| function RowContextMenu(sender, eventArgs) |
| { |
| var e = eventArgs.get_domEvent(); |
| var index = eventArgs.get_itemIndexHierarchical(); |
| document.getElementById('<%=hdnClickedRow.ClientID%>').value = index; |
| menu = $find("<%=RadMenu1.ClientID%>"); |
| menu.show(e); |
| e.cancelBubble = true; |
| e.returnValue = false; |
| if (e.stopPropagation) |
| { |
| e.stopPropagation(); |
| e.preventDefault(); |
| } |
| } |
| </script> |
| <input type="hidden" id="hdnClickedRow" runat="server" /> |
| <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> |
| </telerik:RadScriptManager> |
| <telerik:RadGrid ID="RadGrid1" runat="server" onitemcommand="RadGrid1_ItemCommand"> |
| <MasterTableView> |
| <Columns> |
| <telerik:GridTemplateColumn> |
| <ItemTemplate> |
| <asp:LinkButton ID="lnkbtn" runat="server" Text="Download File" CommandName="someCMD" /> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| </Columns> |
| </MasterTableView> |
| <ClientSettings> |
| <ClientEvents OnRowContextMenu="RowContextMenu" /> |
| <Selecting AllowRowSelect="true" /> |
| </ClientSettings> |
| </telerik:RadGrid> |
| <telerik:RadContextMenu ID="RadMenu1" Runat="server" ContextMenuElementID="none"> |
| <Targets> |
| <telerik:ContextMenuControlTarget ControlID="RadGrid1" /> |
| </Targets> |
| <Items> |
| <telerik:RadMenuItem Text="abc abc abc" Value="abc abc abc1" /> |
| <telerik:RadMenuItem Text="abc abc abc" Value="abc abc ab2c" /> |
| <telerik:RadMenuItem Text="abc abc abc" Value="abc abc abc3" /> |
| <telerik:RadMenuItem Text="abc abc abc" Value="abc abc abc4" /> |
| <telerik:RadMenuItem Text="abc abc abc" Value="abc abc abc5" /> |
| </Items> |
| </telerik:RadContextMenu> |
| <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> |
| </form> |
| </body> |
| </html> |
| using System; |
| using System.Collections; |
| using System.Configuration; |
| using System.Data; |
| using System.Linq; |
| using System.Web; |
| using System.Web.Security; |
| using System.Web.UI; |
| using System.Web.UI.HtmlControls; |
| using System.Web.UI.WebControls; |
| using System.Web.UI.WebControls.WebParts; |
| using System.Xml.Linq; |
| using System.IO; |
| using System.Text; |
| namespace RadGridMenu |
| { |
| public partial class _Default : System.Web.UI.Page |
| { |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| if (!IsPostBack) |
| { |
| RadGrid1.DataSource = Enumerable.Range(0, 10); |
| RadGrid1.DataBind(); |
| } |
| } |
| private void DownaloadFile() |
| { |
| string fileToDownload = Path.Combine(Server.MapPath("."), "aaa.txt"); |
| using (FileStream oFile = new FileStream(fileToDownload, FileMode.Open)) |
| { |
| HttpContext.Current.Response.Clear(); |
| HttpContext.Current.Response.ContentType = "text/html"; |
| HttpContext.Current.Response.HeaderEncoding = Encoding.Default; |
| HttpContext.Current.Response.AddHeader("Content-disposition", "attachment; filename=file.txt"); |
| using (BinaryReader br = new BinaryReader(oFile)) |
| { |
| byte[] buff = new byte[51200]; |
| int numOfRead = 0; |
| while ((numOfRead = br.Read(buff, 0, buff.Length)) > 0) |
| { |
| HttpContext.Current.Response.OutputStream.Write(buff, 0, numOfRead); |
| } |
| } |
| HttpContext.Current.Response.End(); |
| } |
| } |
| protected void RadGrid1_ItemCommand(object source, Telerik.Web.UI.GridCommandEventArgs e) |
| { |
| if (e.CommandName == "someCMD") |
| { |
| DownaloadFile(); |
| } |
| } |
| protected void Button1_Click(object sender, EventArgs e) |
| { |
| DownaloadFile(); |
| } |
| } |
| } |
What can we do to fix it?
Nowicki Sebastian