[英]Can't find HTML control in codebehind
我有一個div(id = main),它里面包含15個html select控件,它們的ID為ddl1,ddl2,ddl3等。
現在,我想從XML文件中動態選擇或分配它們的索引,因此我編寫了這段代碼。
private void readxml(string spath) {
XmlDocument doc = new XmlDocument();
doc.Load(spath);
//doc.LoadXml(spath);
XmlNodeList xmlnodes = doc.SelectNodes("/Hedge/*");
for (int i=1; i <= 15; i++) {
(main.FindControl("ddl" + i) as DropDownList).SelectedIndex = Int32.Parse(xmlnodes[i].InnerText);
}
}
但是這里發生了錯誤...
你調用的對象是空的。
可能是因為找不到控件(HTML選擇控件)。有人可以告訴我原因或解決我的問題嗎?
您是否將runat="server"
添加到控件和Id="ddl1"
?
在這種標記的情況下:
<div id="main" runat="server">
<select id="ddl1" runat="server"></select>
</div>
ddl1
的類型不是DropDownList,而是HtmlSelect,因此將代碼更改為:
(main.FindControl("ddl" + i) as HtmlSelect).SelectedIndex = Int32.Parse(xmlnodes[i].InnerText);
如果仍然為null錯誤,則xmlnodes
為null的可能性xmlnodes
,這意味着在加載XML文檔或選擇節點時出錯。
有兩件事可能出錯了。 一個很明顯
(main.FindControl("ddl" + i) as DropDownList).SelectedIndex =
Int32.Parse(xmlnodes[i].InnerText);
由於您沒有使用asp.net下拉列表,因此無法將其強制轉換為此。 所以應該
(main.FindControl("ddl" + i) as HtmlSelect).SelectedIndex =
Int32.Parse(xmlnodes[i].InnerText);
另一個可能是屬性runat="server"
,如果您使用html controls
並想在C#頁面上訪問它,則必須在該屬性中。
<select id="Select1" runat="server">
<option value="1" Selected="True"> Item 1 </option>
.....
</select>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.