1

以下のようなページにチェックボックスリストがあります。

   <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);
        }
    }

これを空白のプロジェクトで実行すると、style:margin-left: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)唯一の違いは、メインプロジェクトにマスターページがあり、いくつかの追加のパネルがあることですが、レンダリングされる際にスパンを停止するのは何でしょうか?どんな助けでも役に立ちます。ありがとう!

4

1 に答える 1

1

これを試して、効果があるかどうかを確認してください。

item.Attributes.CssStyle.Add("margin-left", String.Format("{0}px", margin));
于 2012-10-01T02:14:25.303 に答える