添加 CSS 和 ListItem.Attributes.Add 不起作用
Adding CSS with ListItem.Attributes.Add does not work
我在 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 日期选择器。由于某些原因,我必须在 OnPreRender
中初始化日期选择器
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 属性生成列表框项目标记。它有文本和值,但没有 class 属性。
我了解到属性会在回发时丢失,但我认为添加 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 中调用函数,但没有任何变化。
请指教。
因此,我无法找到根本原因。似乎 ASPX 生命周期的某些部分与我的 CSS 搞混了,我不知道是哪一部分搞砸了。我必须对此做一个乏味的解决方法。
1) 每次列表框绑定到它的数据源时,如果循环项是 header,我会将它推入一个字符串数组。
2) 列表框循环完成后,将字符串数组保存到ViewState
3) 创建一个将在 Page_Load
结束时调用的函数
4) 该函数将检索字符串数组 ViewState 中的每个 header 并执行 Attributes.Add()
我不认为这是一个明智的解决方案,但至少它对我有用。
我在 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 日期选择器。由于某些原因,我必须在 OnPreRender
中初始化日期选择器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 属性生成列表框项目标记。它有文本和值,但没有 class 属性。
我了解到属性会在回发时丢失,但我认为添加 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 中调用函数,但没有任何变化。
请指教。
因此,我无法找到根本原因。似乎 ASPX 生命周期的某些部分与我的 CSS 搞混了,我不知道是哪一部分搞砸了。我必须对此做一个乏味的解决方法。
1) 每次列表框绑定到它的数据源时,如果循环项是 header,我会将它推入一个字符串数组。
2) 列表框循环完成后,将字符串数组保存到ViewState
3) 创建一个将在 Page_Load
结束时调用的函数4) 该函数将检索字符串数组 ViewState 中的每个 header 并执行 Attributes.Add()
我不认为这是一个明智的解决方案,但至少它对我有用。