Topbar
Topbar
Sign in
|
Join
|
Client Center
Home
Products
Client Center
Contact
Purchase
Support forums
»
Products
»
Ajax Uploader
»
New sample for new client/server side API :
New sample for new client/server side API :
Last post 09-03-2009, 4:13 AM by
cutechat
. 0 replies.
Sort Posts:
Oldest to newest
Newest to oldest
Previous
Next
09-03-2009, 4:13 AM
55341
cutechat
Joined on 07-22-2004
Posts 2,332
New sample for new client/server side API :
Reply
Quote
Make sure you use the last version.
One of the new version has bug on the ViewState of the ClientData property.
<%@ Page Language="C#" %> <%@ Import Namespace="CuteWebUI" %> <%@ Register TagPrefix="CuteWebUI" Namespace="CuteWebUI" Assembly="CuteWebUI.AjaxUploader" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void UploadAttachments1_AttachmentAdded(object sender, AttachmentItemEventArgs args) { TextBox tb = (TextBox)args.Item.FindControl("textboxDesc"); tb.Text = args.Item.ClientData; } protected void UploadAttachments1_AttachmentCreated(object sender, AttachmentItemEventArgs args) { TextBox tb = (TextBox)args.Item.FindControl("textboxDesc"); tb.TextChanged += new EventHandler(tb_TextChanged); } void tb_TextChanged(object sender, EventArgs e) { TextBox tb=(TextBox)sender; for (Control c = tb; c != null; c = c.Parent) { if (c is AttachmentItem) { ((AttachmentItem)c).ClientData = tb.Text; return; } } } protected void buttonTell_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); sb.Append("There's " + UploadAttachments1.Items + " items:"); foreach (AttachmentItem item in UploadAttachments1.Items) { sb.Append("<br/>"); sb.Append(item.FileName); sb.Append(" - "); sb.Append(item.ClientData); } labelMsg.Text = sb.ToString(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <button id='btnUpload' style="display: none;" onclick="Upload_Click();return false;"> Start Upload</button> <CuteWebUI:UploadAttachments runat="server" ID="UploadAttachments1" ManualStartUpload="True" OnAttachmentAdded="UploadAttachments1_AttachmentAdded" OnAttachmentCreated="UploadAttachments1_AttachmentCreated" NumFilesShowCancelAll="1000" InsertText="Add files"> <ItemTemplate> <asp:TextBox runat="server" ID="textboxDesc" /> </ItemTemplate> </CuteWebUI:UploadAttachments> <br /> <table id='clientTable' style="display: none; font-size: 9pt; border-collapse: collapse" border="1" cellspacing="0" cellpadding="5"> <tr> <td> FileName </td> <td> Description </td> <td> Status </td> </tr> </table> <br /> <asp:Button runat=server ID="buttonTell" Text="Tell me how to get the server textbox values" OnClick="buttonTell_Click" OnClientClick="return buttonTell_Click()" /> <br /> <asp:Label runat=server ID="labelMsg" /> </div> </form> </body> <script> var btnUpload=document.getElementById("btnUpload"); var clientTable=document.getElementById("clientTable"); var uploader=document.getElementById('<%=UploadAttachments1.ClientID %>'); var buttonTell=document.getElementById('<%=buttonTell.ClientID %>'); var buttonTellClicked=false; function Upload_Click() { uploader.startupload(); } function buttonTell_Click() { buttonTellClicked=true; var items=uploader.getitems(); for(var i=0;i<items.length;i++) { switch(items[i].Status) { case "Queue": case "Upload": uploader.startupload(); return false; } } return true; } function CuteWebUI_AjaxUploader_OnPostback() { if(buttonTellClicked) { buttonTell.click(); return false; } } function CuteWebUI_AjaxUploader_OnQueueUI(files) { btnUpload.style.display=files.length>0?"":"none"; clientTable.style.display=files.length>0?"":"none"; ShowMyClientTable(files); return false; } function ShowMyClientTable(files) { var map={} var newlist=[]; for(var i=1;i<clientTable.rows.length;i++) { var row=clientTable.rows.item(i); row._scan=false; map[row._filekey]=row; } //update existing row for(var i=0;i<files.length;i++) { var file=files[i]; var row=map[file.InitGuid||file.FileName]; if(row==null) { newlist.push(file); continue; } row._scan=true; UpdateToRow(row,file); } //delete removed row for(var i=1;i<clientTable.rows.length;i++) { var row=clientTable.rows.item(i); if(!row._scan) { clientTable.deleteRow(i); i--; } } //add new row: for(var i=0;i<newlist.length;i++) { var file=newlist[i]; var row=clientTable.insertRow(-1); row.insertCell(-1); row.insertCell(-1); row.insertCell(-1); UpdateToRow(row,file); } } function UpdateToRow(row,file) { row._file=file; row._filekey=file.InitGuid||file.FileName; if(!row._textbox) { row._textbox=document.createElement("INPUT"); row._textbox.type="text"; row.cells.item(1).appendChild(row._textbox); } row._textbox.onchange=function() { file.SetClientData(row._textbox.value); } row.cells.item(0).innerHTML=file.FileName; switch(file.Status) { case "Queue": row.cells.item(2).innerHTML="<a href='#' onclick='CancelQueueItem(this);return false'>remove</a>"; break; case "Finish"://uploaded case "Upload"://uploading case "Error"://cancelled default: row.cells.item(2).innerHTML=file.Status; break; } } function CancelQueueItem(link) { var td=link.parentNode; var row=td.parentNode; var file=row._file; file.Cancel(); } </script> <script type="text/javascript"> //prevent duplicated items: function CuteWebUI_AjaxUploader_OnSelect(files) { var sames=[]; var items=uploader.getitems(); for(var i=0;i<files.length;i++) { var file=files[i]; var exists=false; for(var j=0;j<items.length;j++) { var item=items[j]; if(item.FileName==file.FileName) { exists=true; } } if(exists) { sames.push(file.FileName); file.Cancel(); } } if(sames.length>0) { alert("These file(s) are already in the queue : \r\n\t"+sames.join('\r\n\t')); } } </script> </html>