2013-02-15 2 views
5

Ich benutze die AsyncUploadWie bekomme ich den Wert des Textfelds, das dynamisch mit dem Raduploader im Code erstellt wurde?


<telerik:RadAsyncUpload runat="server" ID="rada_attach" OnClientFileUploaded="onClientFileUploaded" 
           MultipleFileSelection="Disabled" InitialFileInputsCount="1" MaxFileInputsCount="1" 
           Width="100%" /> 

function onClientFileUploaded(radAsyncUpload, args) { 
    var row = args.get_row(), 
     inputName = radAsyncUpload.getAdditionalFieldID("TextBox"), 
     inputType = "text", 
     inputID = inputName, 
     input = createInput(inputType, inputID, inputName), 
     label = createLabel(inputID), 
     br = document.createElement("br"); 

    row.appendChild(br); 
    row.appendChild(input); 
    row.appendChild(label); 

} 

function createInput(inputType, inputID, inputName) { 
    var input = document.createElement("input"); 

    input.setAttribute("type", inputType); 
    input.setAttribute("id", inputID); 
    input.setAttribute("name", inputName); 

    return input; 
} 

ich die Textbox zugreifen möchten (die dynamisch erstellt) in CS-.

Wie geht das?


Die vollständige Antwort:

var $ = $telerik.$; 

function onClientFileUploaded(radAsyncUpload, args) { 
    var $row = $(args.get_row()); 
    var inputName = radAsyncUpload.getID("TextBox"); 
    var inputType = "text"; 
    var inputID = inputName; 
    var input = createInput(inputType, inputID, inputName); 
    var label = createLabel(inputID); 
    $row.append("<br/>"); 
    $row.append(label); 
    $row.append(input); 
} 

function createInput(inputType, inputID, inputName) { 
    var input = '<input type="' + inputType + '" id="' + inputID + '" name="' + inputName + '" />'; 
    return input; 
} 

function createLabel(forArrt) { 
    var label = '<label for=' + forArrt + '>info: </label>'; 
    return label; 
} 

foreach (UploadedFile UF in rada_attach.UploadedFiles) 
       { 
        if (UF.GetFieldValue("TextBox") != null) 
        { 
         OBJ.File_name = UF.GetFieldValue("TextBox"); 
        } 
        else 
        { 
         OBJ.File_name = UF.GetName(); 
        } 
+3

Es ist auf der Client-Seite erstellt wurde, nicht der Server-Seite. CS wird es nicht berühren können, wenn es nicht zurückgeschickt wird. –

+0

Speichern Sie die generierte ID auf dem Server? –

+0

no id nicht ... –

Antwort

2

Meiner Meinung nach Dokumentation ist gut klar. Überprüfen Sie die Registerkarte Beschreibung auf der Seite, auf die Sie verweisen. Sie können unten auf Postbacks mit Codewert der dynamischen Textfelder zugreifen:

if (rada_attach.UploadedFiles.Count > 0) { 
    for (var index = 0; index < rada_attach.UploadedFiles.Count; ++index) { 
     var textBoxValue = rada_attach.UploadedFiles[index].GetFieldValue("TextBox"); 
    } 
} 

BTW, ist dieses Szenario gut dcoumented hier: Adding Information to Uploaded Files

+0

Ich versuche dies: 'foreach (UploadedFile UF in rada_attach.UploadedFiles) { byte [] file = AttachDAL.ReadFully (UF.InputStream); if (UF.GetFieldValue ("TextBox")! = Null) { OBJ.File_name = UF.GetFieldValue ("TextBox"); } sonst { OBJ.File_name = UF.GetName(); } ' –

+0

aber' UF.GetFieldValue ("TextBox") 'ist immer null –

+0

Verwenden Sie diesen Code im Ereignis' FileUploaded'? –

2

Sie müssen die Request.Form Werte überprüfen (die in der gebuchten Form waren) beim Postback und führen Sie eine Überprüfung aller Felder durch, die zurückgebucht wurden.

Ich vermute, dass Sie den Namen/die ID des Textfelds nicht kennen, wenn es auf der Client-Seite dynamisch erstellt wurde? Beachten Sie, dass es das name des Formularfelds wäre, das das Request-Objekt in .cs sehen würde.

Erst wenn Sie zurück können gebucht haben Zugriff Sie diesen Wert in den CS-