最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在asp.net下實(shí)現(xiàn)Option條目中填充前導(dǎo)空格的方法

 更新時(shí)間:2007年03月08日 00:00:00   作者:  
在使用Web頁(yè)面上的下拉列表框(SELECT element)顯示數(shù)據(jù)列表時(shí),有時(shí)我們會(huì)遇到有層次的數(shù)據(jù)條目。比如論壇中的子論壇和它的分類(lèi)之間,以及一些具有包含關(guān)系的層次數(shù)據(jù)條目。使下拉列表框中,不同的level有一定的顯示縮進(jìn)將是非常友好的一種排版方式。

    如果在HTML編寫(xiě)狀態(tài)下,或在ASP等腳本語(yǔ)言中,制作這樣的下拉列表窗口非常容易。我們知道空格" "在Option標(biāo)簽的前后是會(huì)被brower的顯示引擎自動(dòng)忽略掉的,所以我們使用硬空格 就可以了,效果如下圖:
    Select01.png
<select>
    
<option value="0">Level 00</option>
    
<option value="1">&nbsp;Level 01</option>
    
<option value="2">&nbsp;&nbsp;Level 02</option>
    
<option value="3">&nbsp;&nbsp;&nbsp;Level 03</option>
    
<option value="4">&nbsp;&nbsp;&nbsp;&nbsp;Level 04</option>
</select>

    如此簡(jiǎn)單就實(shí)現(xiàn)這個(gè)效果了,似乎沒(méi)有什么可說(shuō)的。可是當(dāng)我們?cè)贏SP.NET中使用服務(wù)器控件ListBox或DropDownList的時(shí)候,要實(shí)現(xiàn)這個(gè)效果問(wèn)題就來(lái)了。由于ListItem類(lèi)的Text屬性在輸出為HTML代碼的時(shí)候,會(huì)自動(dòng)進(jìn)行HtmlEncode轉(zhuǎn)換,我們上面的示例會(huì)被輸出為
    Select02.png
<select>
    
<option value="0">Level 00</option>
    
<option value="1">&amp;nbsp;Level 01</option>
    
<option value="2">&amp;nbsp;&amp;nbsp;Level 02</option>
    
<option value="3">&amp;nbsp;&amp;nbsp;&amp;nbsp;Level 03</option>
    
<option value="4">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Level 04</option>
</select>

    真是讓人郁悶,我第一次遇到這個(gè)問(wèn)題時(shí),使用了一個(gè)很ugly的方法來(lái)解決。就是重載控件,在Render的時(shí)候把"&amp;nbsp;"變回為"&nbsp;"。大概就是:
class XxxDropDownList : DropDownList
{
    
protected override void Render(HtmlTextWriter writer)
    
{
        StringBuilder strb 
= new StringBuilder();
        StringWriter sw 
= new StringWriter(strb);
        HtmlTextWriter htw 
= new HtmlTextWriter(sw);
        
base.Render(htw);
        strb.Replace(
"&amp;nbsp;""&nbsp;");
        writer.Write(strb.ToString());
    }

}

    這個(gè)解決方案問(wèn)題很多,效率是一回事,并且非常不完備。除了使用這種"野蠻"的修改Render結(jié)果的方法,還有一個(gè)也是ugly的方法是使用全角的Space,就是" "。不過(guò)在中文的系統(tǒng)中這種方法似乎也說(shuō)的過(guò)去,可是在純英文(Not support East-Asian language)的環(huán)境下,這樣的Option條目就暈菜了,錯(cuò)誤效果如下圖:
    Select03.png
    // 左圖是在中文系統(tǒng)中,右圖是在純英文系統(tǒng)中

    那么怎么辦呢?重載ListItem?! 不過(guò)此路不通,ListItem類(lèi)是被sealed修飾的。后來(lái)我發(fā)現(xiàn),可以使用&nbsp;的"原始形式"來(lái)讓DropListBox輸出正確的HTML代碼。什么是&nbsp;的原始形式呢?&nbsp;這個(gè)東西本來(lái)是在RFC 1866中定義的named entity,全稱(chēng)叫做:no-break space,CDATA格式為:&#160;。我們把160作為字符放入ListItem的Text中,就能得到正確的HTML輸出,效果和第一幅圖中的HTML示例效果相同。服務(wù)器端代碼為:
char nbsp = (char)0xA0;
for ( int i=0 ; i < 5 ; ++i )
{
    ddl3.Items.Add(new ListItem("Level 0".PadLeft(i+7, nbsp) + i, i.ToString()));
}


    生成的客戶端代碼為:
<select>
    
<option value="0">Level 00</option>
    
<option value="1">&#160;Level 01</option>
    
<option value="2">&#160;&#160;Level 02</option>
    
<option value="3">&#160;&#160;&#160;Level 03</option>
    
<option value="4">&#160;&#160;&#160;&#160;Level 04</option>
</select>

相關(guān)文章

  • ASP.NET中上傳并讀取Excel文件數(shù)據(jù)示例

    ASP.NET中上傳并讀取Excel文件數(shù)據(jù)示例

    如何打開(kāi)Excel數(shù)據(jù)庫(kù)文件,想必有很多朋友都不清楚吧,下面通過(guò)一個(gè)簡(jiǎn)單的例子,實(shí)現(xiàn)讀取Excel數(shù)據(jù)文件
    2014-05-05
  • .Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路詳解

    .Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路詳解

    這篇文章主要給大家介紹了.Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • Asp.net中防止用戶多次登錄的方法

    Asp.net中防止用戶多次登錄的方法

    在web開(kāi)發(fā)時(shí),有的系統(tǒng)要求同一個(gè)用戶在同一時(shí)間只能登錄一次,也就是如果一個(gè)用戶已經(jīng)登錄了,在退出之前如果再次登錄的話需要報(bào)錯(cuò)。
    2008-08-08
  • .NET讀寫(xiě)Excel工具Spire.Xls使用 Excel文件的控制(2)

    .NET讀寫(xiě)Excel工具Spire.Xls使用 Excel文件的控制(2)

    這篇文章主要為大家詳細(xì)介紹了.NET讀寫(xiě)Excel工具Spire.Xls使用,Excel文件的控制,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 淺談asp.net Forms身份驗(yàn)證詳解

    淺談asp.net Forms身份驗(yàn)證詳解

    這篇文章主要介紹了淺談asp.net Forms身份驗(yàn)證詳解 ,這種方法可以輕松的保持用戶的登錄狀態(tài)(如果用戶想這樣),便捷的用戶授權(quán)配置,增強(qiáng)的安全性,有興趣的可以了解一下。
    2016-12-12
  • asp.net Repeater控件的說(shuō)明及詳細(xì)介紹及使用方法

    asp.net Repeater控件的說(shuō)明及詳細(xì)介紹及使用方法

    Repeater控件是Web 服務(wù)器控件中的一個(gè)容器控件,它使您可以從頁(yè)的任何可用數(shù)據(jù)中創(chuàng)建出自定義列表。
    2010-04-04
  • 水晶報(bào)表asp.net的webform下基本用法實(shí)例

    水晶報(bào)表asp.net的webform下基本用法實(shí)例

    這篇文章主要介紹了水晶報(bào)表asp.net的webform下基本用法,實(shí)例講述了asp.net中水晶報(bào)表的創(chuàng)建與使用方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • .NET?6中間件Http?Logging使用介紹

    .NET?6中間件Http?Logging使用介紹

    這篇文章介紹了.NET?6中間件Http?Logging的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • asp.net實(shí)現(xiàn)的計(jì)算網(wǎng)頁(yè)下載速度的代碼

    asp.net實(shí)現(xiàn)的計(jì)算網(wǎng)頁(yè)下載速度的代碼

    剛看到有人給出asp.net實(shí)現(xiàn)的計(jì)算網(wǎng)頁(yè)下載速度的方法,本方法未經(jīng)本人測(cè)試,不知道能否可靠性如何。準(zhǔn)確來(lái)說(shuō),這只是個(gè)思路吧
    2013-03-03
  • .NET Core跨平臺(tái)執(zhí)行命令、腳本的方法詳細(xì)

    .NET Core跨平臺(tái)執(zhí)行命令、腳本的方法詳細(xì)

    這篇文章主要給大家介紹了關(guān)于.NET Core跨平臺(tái)執(zhí)行命令、腳本的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05

最新評(píng)論

兴业县| 泉州市| 东阳市| 玉环县| 宁化县| 大冶市| 郁南县| 车致| 百色市| 山丹县| 娱乐| 新安县| 桃江县| 广德县| 镇雄县| 航空| 佛学| 简阳市| 韶山市| 彰化市| 六枝特区| 丹东市| 张北县| 全州县| 珲春市| 大安市| 靖西县| 海原县| 鄂州市| 海淀区| 红原县| 林西县| 肇庆市| 台江县| 柘荣县| 循化| 北宁市| 上蔡县| 天水市| 沂水县| 成武县|