2013-02-15 38 views
5

Io uso il AsyncUploadCome ottenere il valore della casella di testo creata dinamicamente con Raduploader nel codice?


<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; 
} 

voglio accedere casella di testo (che ha creato in modo dinamico) in cs.

Come fare?


la risposta completa:

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

E 'stato creato sul lato client, non il lato server. CS non sarà in grado di toccarlo a meno che non venga posticipato. –

+0

Salva l'ID generato sul server? –

+0

no id non ... –

risposta

2

A mio parere la documentazione è ben chiaro. Controlla la scheda Descrizione sulla pagina a cui fai riferimento. È possibile accedere a valore caselle di testo dinamico con il codice qui sotto il postback:

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, questo scenario è ben dcoumented-qui: Adding Information to Uploaded Files

+0

Provo questo: 'foreach (UF uploaded in rada_attach.UploadedFiles) { byte [] file = AttachDAL.ReadFully (UF.InputStream); if (UF.GetFieldValue ("TextBox")! = Null) { OBJ.File_name = UF.GetFieldValue ("TextBox"); } altro { OBJ.File_name = UF.GetName(); } ' –

+0

ma' UF.GetFieldValue ("TextBox") 'è sempre nullo –

+0

Usi questo codice nell'evento' FileUploaded'? –

2

è necessario controllare i valori Request.Form (che erano in forma spedita) sul postback ed eseguire un controllo su tutti i campi che sono stati postati.

Suppongo che non si conosca il nome/id della casella di testo se è stata creata dinamicamente sul lato client? Si noti che sarebbe il name del campo modulo che vedrebbe l'oggetto Request in .cs.

Solo una volta che hai postato di nuovo si può accedere a tale valore nei cs

Problemi correlati