【问题标题】:How to get the value of the textbox which created dynamically with the Raduploader in code behind?如何在后面的代码中获取使用 Raduploader 动态创建的文本框的值?
【发布时间】:2013-01-31 16:54:06
【问题描述】:

我使用AsyncUpload


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

我想访问 .cs 中的文本框(动态创建的)。

怎么做?


完整答案:

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

【问题讨论】:

  • 它是在客户端创建的,而不是服务器端。除非它被回发,否则 CS 将无法触摸它。
  • 您是否将生成的 id 保存在服务器上?

标签: c# javascript jquery asp.net telerik


【解决方案1】:

在我看来,文档很清楚。检查您参考的页面上的描述选项卡。您可以在回发时使用以下代码访问动态文本框的值:

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

顺便说一句,这个场景在这里得到了很好的证明:Adding Information to Uploaded Files

【讨论】:

  • 我试试这个:foreach (UploadedFile UF in rada_attach.UploadedFiles) { byte[] file = AttachDAL.ReadFully(UF.InputStream); if (UF.GetFieldValue("TextBox") != null) { OBJ.File_name = UF.GetFieldValue("TextBox"); } else { OBJ.File_name = UF.GetName(); }
  • UF.GetFieldValue("TextBox") 始终为空
  • 文档不匹配。这里建议使用radAsyncUpload.getID函数代替radAsyncUpload.getAdditionalFieldID试试
【解决方案2】:

您需要在回发时检查Request.Form 值(在已发布的表单中)并检查所有已回发的字段。

我猜如果文本框是在客户端动态创建的,您不会知道文本框的名称/ID?请注意,.cs 中的Request 对象将看到表单字段的name

只有在您回发后,您才能访问 .cs 中的该值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多