使用ListItem.Attributes.Add添加CSS不起作用

时间:2016-12-14 02:04:51

标签: c# css .net modalpopupextender

我在ajax ModalPopupExtender中有这样的函数:

private void BindListBox()
{
  var obj;
  // some code to bind obj 
  ListItem x = new ListItem(obj);
  x.Attributes.Add("class", "headerStyle");
  lstListBox1.Items.Add(x);
}

我把这个函数放在OnPreRender事件中,并带有一个初始化bootstrap datepicker的代码。由于某种原因,我必须在OnPreRender

中初始化datepicker
protected override void OnPreRender(EventArgs e)
{
   base.OnPreRender(e);

   String script = "$(document).ready(function() {$('#" + txtDate.ClientID + "').datepicker({format: 'dd-mm-yyyy',autoclose: true});});";
   ScriptManager.RegisterStartupScript(base.Page, base.Page.GetType(), String.Format("jQuery_{0}", txtDate.ClientID), script, true);        

   BindListBox();
}

执行代码时,不会使用headerStyle类属性生成列表框项目标记。它有文本和值,但没有类属性。

我读到了关于回传时会丢失的属性,但是在添加class属性后我不认为我有任何回发。我在ModalPopupExtender中的Page_Load为空,并且调用弹出窗口的ASPX中的Page_Load仅包含此代码:

protected void Page_Load(object sender, EventArgs e)
    {
        Page.Header.DataBind();
        if (!IsPostBack)
        {                
            ModalPopupExtenderForm.Show();
        }
    }

我不确定问题出在哪里。

我尝试在ASPX Page_Load或模式中调用该函数弹出Page_Load但没有更改。

请指教。

1 个答案:

答案 0 :(得分:0)

结果,我无法找到根本原因。看起来ASPX生命周期的某些部分与我的CSS混乱,我不知道哪个部分搞乱了。我必须对此做一个繁琐的解决方法。

1)每次列表框绑定到其数据源时,如果循环项是标题,我会将其推送到字符串数组中。

2)完成循环到列表框后,将字符串数组保存到ViewState

3)创建一个将在Page_Load

结束时调用的函数

4)该函数将检索字符串数组ViewState中的每个头并执行Attributes.Add()

我不认为这是一个明智的解决方案,但至少它对我有用。