【发布时间】:2013-05-21 05:13:57
【问题描述】:
我正在尝试设置 html select 标签的 innerhtml,但我无法设置此功能;因此,我需要使用 outerhtml 功能。这样,不仅是我的代码 HARDCODE ,但它也很荒谬。我已经读过'InnerHTML IE 8 doesn't work properly? Resetting form',但它没有帮助。
如果您告诉我如何设置 html select 标签的 innerhtml 功能,我将不胜感激。
我的 C# 代码:
public void SetDefaultValue(string ControlID, string ControlValue)
{
System.Windows.Forms.HtmlDocument doc = webBrowser1.Document;
HtmlElement HTMLControl = doc.GetElementById(ControlID);
string ListResult;
string ListInnerHTML = "";
ListInnerHTML += "<OPTION value = " + LstString + ">" + LstString + "</OPTION>";
ListResult = "<SELECT id = " + '"' + HTMLControl.Id + '"' + " type = " + '"' + HTMLControl.GetAttribute("type") + '"' + " title = " + '"' +
HTMLControl.GetAttribute("title") + '"' + " name = " + '"' + HTMLControl.Name + '"' + " value = " + '"' + HTMLControl.GetAttribute("value") +
'"' + " size = \"" + HTMLControl.GetAttribute("size") + '"' + HTMLControl.GetAttribute("multiple").ToString() + "\">" + ListInnerHTML + "</SELECT>";
HTMLControl.OuterHtml = ListResult;
}
或
string _lsthtml = _htmlel.OuterHtml;
string[] _parts = ControlValue.Split(new char[] { ',' });
string _lstinner = "";
foreach (string _lst in _parts)
_lstinner += "<option value=" + _lst + ">" + _lst + "</option>";
_lsthtml = _lsthtml.Insert(_lsthtml.IndexOf(">") + 1, _lstinner);
_htmlel.OuterHtml = _lsthtml;
此代码有效,但我需要一些高效且干净的代码。
ReturnControlType 函数返回 html 标签的 type。
【问题讨论】:
-
为什么不使用 asp:DropDownList?
-
@Pete:因为我需要用C#来做,所以不在桌面上。
-
使用 HtmlControl.InnerHtml 到底有什么问题?
-
您能否发布一些代码来显示在什么特殊情况下 innerHTML 不起作用?
-
System.Windows.Forms.HtmlDocument doc = webBrowser1.Document; HtmlElement HTMLControl = doc.GetElementById(ControlID);字符串列表结果;字符串 ListInnerHTML = ""; ListInnerHTML += ""; HTMLControl.InnerHtml = ListInnerHTML;