国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

分享:Microsoft IE Webcontrols Treeview的一個bug及修正

2024-07-21 02:24:12
字體:
來源:轉載
供稿:網友

首先感謝思歸指點了我如何重用treeview這個microsoft ie webcontrol。相關內容請參見http://community.csdn.net/expert/topicview.asp?id=3365114

  ie webcontrol可以單獨用于html文件中,也可以用于web form的.net 程序;
  對于后者,使用中可以通過編程加入節點,也可以綁定;
  對于后者,綁定的時候,可以幫定一個xml格式的字符串,也可以綁定一個xml文件,只要向treeview控件的treenodesrc屬性賦值;
  對于后者,有兩種可能,一種是綁定到一個已經存在于硬盤的xml文件,或者說treenodesrc的值設定為"...../foo.xml"上、另一種則是先創建一個aspx頁面動態產生xml格式的輸出,綁定到這個頁面。
  對于后者,會產生錯誤。

  原因是,treeview控件其實有兩個地方可以綁定,或者說,解析數據源產生樹的結構,一是在server side,一是在browser side。在treeview控件render的過程中,如果發現treenodesrc是一個地址,它就會試圖讀這這個地址的內容,然后解析,并顯式的寫到web頁面的輸出中,這里會產生錯誤。

  我的解決方法是,定義一個擴充的屬性treenodesrca,它不在server端被解析,而是原封不動的寫到browser side,然后treeview的htc再讀取treenodesrca指向的url的內容,并解析。

  具體步驟如下:

一、在treeview的源程序treeview.cs文件的

public class treeview : basepostbackcontrol

的部分加入這樣一段


/// <summary>
/// url of the xml file to import as the treenode content of the tree, browser side binding
/// </summary>
[
category("data"),
defaultvalue(""),
persistencemode(persistencemode.attribute),
resdescription("treenodesrca"),
]
public string treenodesrca
{
    get
    {
        object str = viewstate["treenodesrca"];
        return ((str == null) ? string.empty : (string)str);
    }
    set
    {
        viewstate["treenodesrca"] = value;
    }
}

它的作用是定義一個叫treenodesrca的屬性。

二、在treeview的源程序treeview.cs文件的

protected override void renderuplevelpath(htmltextwriter output)

方法中加入這樣一段

if (treenodesrca != string.empty)
    output.addattribute("treenodesrca", treenodesrca);

它的作用是如果treenodesrca屬性非空則寫到web頁面的輸出中。

三、編譯生成dll文件并引用

四、在treeview的腳本文件treeview.htc的相應位置分別加入:

<public:property name="treenodesrca" id="_tvproptreenodesrca" get="gettreenodesrca" put="settreenodesrca" />

var prop_treenodesrca = null;

function gettreenodesrca()
{
    return prop_treenodesrca;
}

function settreenodesrca(value)
{
    if (prop_treenodesrca != value)
    {
        prop_treenodesrca = value;
    }
}

這是說明定義一個htc里的屬性,設置變量來存放,并設置讀寫它的方法。

五、在treeview的腳本文件treeview.htc的function oncontentready()中,在
    if (treenodesrc != null)
之前,加入:
    if (treenodesrca != null)
     treenodesrc = treenodesrca;
這就保證了創建的時候,如果擴展屬性treenodesrca非空,就會用它來填補treenodesrc,這時browser就會去讀數據源并解析、綁定。

【athossmth原創,轉載請注明,謝謝】

菜鳥學堂:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 探索| 乌兰县| 武清区| 博野县| 松溪县| 苍溪县| 奉贤区| 蓬安县| 易门县| 肃北| 瑞安市| 尉犁县| 萨嘎县| 九寨沟县| 都江堰市| 普兰店市| 永胜县| 元朗区| 乐平市| 巢湖市| 宁安市| 都昌县| 雷州市| 灵武市| 伊川县| 西贡区| 策勒县| 吉木乃县| 根河市| 托克逊县| 彭阳县| 岳西县| 井陉县| 南华县| 西丰县| 泰和县| 卓资县| 泽库县| 泰和县| 兰坪| 青神县|