2017-03-21 263 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」發現控制與否?