如何在后面的代码中获取使用 Raduploader 动态创建的文本框的值?
Posted
技术标签:
【中文标题】如何在后面的代码中获取使用 Raduploader 动态创建的文本框的值?【英文标题】:How to get the value of the textbox which created dynamically with the Raduploader in code behind? 【发布时间】: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 保存在服务器上? 【参考方案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 中的该值
【讨论】:
以上是关于如何在后面的代码中获取使用 Raduploader 动态创建的文本框的值?的主要内容,如果未能解决你的问题,请参考以下文章
在WPF中,有没有办法在后面的代码中获取故事板动画值的当前值?