2017-03-21 189 views
0

下午全部。文本框未设置值

我从webService获取信息,然后根据此信息填充一系列文本框。

的信息是格式化像这样的阵列名为response:

FieldName, FieldValue, FieldName, FieldValue, ... 

其中每个FieldName, FieldValueresult

当我打印出的信息使用:

response.ToList().ForEach(v => v.results.ToList().ForEach(x => str1.Append(String.Format("{0} : {1}", x.fieldname, x.fieldvalue)))); 

我得到的以下字符串:

... Warehouse : 01 StockType : 5 ... 

但是当我尝试并使用指定这些值的文本框:

response.ToList().ForEach(v => v.results.ToList().ForEach(x => (((TextBox)infoHolder.FindControl("txt_" + x.fieldname)).Text) = x.fieldvalue)); 

所有的字段都填充除了仓库。

任何想法或建议为什么将不胜感激。

所有ASP控件都嘲笑这样的:

<asp:TextBox runat="server" ID="txt_NAMEOFRETURNFIELDHERE" class="form-control forminput" Style="overflow: hidden;" autocomplete="off" /> 
+1

你有没有仔细检查'TextBox'中仓库的拼写?因为这是唯一不起作用的。检查“FindControl”是否真的找到它。 – moondaisy

+0

你可能会拼错仓库控制的ID。 – Efe

+0

查看解答的答案。 –

回答

-1

我解决它。我用try/catch包围了整个lambda表达式。这导致它在没有进行的情况下发现异常。

固定使用:

response.ToList().ForEach(v => v.results.ToList().ForEach(x => 
{ 
    try 
    { 
    (((TextBox)infoHolder.FindControl("txt_" + x.fieldname)).Text) = x.fieldvalue; 
    } 
    catch { } 
})); 

教训教训。

+0

小心分享是什么例外? – Seano666

+0

并非所有通过的值都在表格内,因为我不需要它们。这是一个空例外。 –

0

检查仓库的拼写,并确保您的ASPX中的字段ID与运行时构建的代码相匹配。当字段名称为“仓库”时,对此进行简单调试将有所帮助。

也做了“FindControl”发现控制与否?