2012-10-01 87 views
1

我在頁面上有一個複選框列表,如下所示。將屬性添加到ListItem,而不是呈現樣式

<asp:CheckBoxList runat="server" ID="lstFeatures" RepeatDirection="Vertical"></asp:CheckBoxList> 

後端代碼看起來像這樣。

private void MakeRegionCheckboxes(ReportRegion region, int margin) 
    { 
     foreach (ReportRegion subregion in region.childRegions) 
     { 
      ListItem item = new ListItem(); 
      item.Text = subregion.Name; 
      item.Value = subregion.Name; 
      item.Selected = subregion.DefaultSelection; 
      item.Attributes.Add("style", "margin-left:" + margin.ToString() + "px"); 
      lstFeatures.Items.Add(item); 

      MakeRegionCheckboxes(subregion, margin + 30); 
     } 
    } 

當這個運行在一個空白的項目,它縮進「次區域」很好的風格:保證金左:30PX獲取跨度渲染,你可以看到。

<td> 
    <span style="margin-left:30px"> 
    <input id="lstFeatures_1" type="checkbox" checked="checked" name="lstFeatures$1"> 
    <label for="lstFeatures_1">Member Information</label> 
    </span> 
</td> 

然而,當我在我的主要項目運行相同代碼不會呈現跨度,因此,保證金是沒有得到設置。我所得到的就是這個。

<td> 
    <input id="ctl00_pg_BuildReport_lstFeatures_1" type="checkbox" checked="checked" name="ctl00$pg$BuildReport$lstFeatures$1"> 
    <label for="ctl00_pg_BuildReport_lstFeatures_1">Member Information</label> 
</td> 

這兩個項目(3.5)唯一的區別是主要的項目有一個母版,也許一些額外的面板,但我只是想知道什麼會停止越來越呈現跨度相同的框架?任何幫助都會有用。謝謝!

回答

1

試試這個,看看它是否有任何影響:

item.Attributes.CssStyle.Add("margin-left", String.Format("{0}px", margin)); 
+0

至於你提到爲什麼它可能是在兩個環境之間不同的具體問題,我會仔細檢查正在使用相同的服務包, ,我不認爲這很重要,但對於傻笑,我也很好奇兩個應用程序是否使用相同的HTML/XHTML文檔類型。 –

+0

通過CssStyle添加它也不起作用。如果它有幫助,我在我自己的本地主機(使用內置的ASP.NET開發服務器,這顯示正確)下運行一個應用程序,另一個在Windows 2008 IIS 6服務器下運行(這不顯示樣式) – Coesy