簡體   English   中英

在代碼隱藏中找不到HTML控件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM