我有一个列intrestedFields的下拉列表,我在该下拉列表中添加了ListItem属性
现在问题是当我把这个intrest_field()方法放回回发时,ListItem属性没有显示, 当我把它放在回发之外时,会显示listitem属性,但是我的另一个下拉列表项没有显示,并且还显示错误“对象引用未设置为对象的内容”。
我尝试过PreRender,但同样的问题也出现了。
.cs代码
if (!IsPostBack)
{
intrest_field();
}
public void intrest_field()
{
ListItem l1 = new ListItem();
l1 = drpfield.Items.FindByValue("1");
l1.Attributes.Add("style", "color:gray;font-weight:bold;font-size:larger");
l1.Attributes.Add("disabled", "true");
l1.Value = "-1";
ListItem l2 = drpfield.Items.FindByValue("2");
l2.Attributes.Add("style", "color:gray;font-weight:bold;font-size:larger");
l2.Attributes.Add("disabled", "true");
l2.Value = "-1";
ListItem l3 = drpfield.Items.FindByValue("3");
l3.Attributes.Add("style", "color:gray;font-weight:bold;font-size:larger");
l3.Attributes.Add("disabled", "true");
l3.Value = "-1";
}
.aspx代码
<asp:DropDownList ID="drpfield" runat="server" Height="20px" Width="190px"
AutoPostBack="True">
<asp:ListItem Value="1">Top Categories</asp:ListItem>
<asp:ListItem >Accounts</asp:ListItem>
<asp:ListItem Value="2">Financial </asp:ListItem>
<asp:ListItem>ITES</asp:ListItem>
<asp:ListItem Value="3">HR</asp:ListItem>
<asp:ListItem>Marketing</asp:ListItem> </asp:DropDownList>
此l1.attributes.add样式丢失后, 当我把intrest_field()放在
中protected void drpfield_PreRender(object sender, EventArgs e)
{}
它有效但我的另一个下拉列表项目没有显示
即从drpfield中选择项目后,当我从另一个下拉列表国家/地区选择项目时,它没有显示状态。 没有使用dropdownlist drpfield它可以工作
可能有什么问题?
答案 0 :(得分:0)
你做错了。例如,您正在按值“1”查找项目,更改为“-1”,并且在回发后您尝试按值“1”查找该项目,该项目不再存在!
l1 = drpfield.Items.FindByValue("1");
... ... ...
l1.Value = "-1";
我建议不要将值更改为-1:
protected void Page_Load(object sender, EventArgs e)
{
intrest_field();
}
public void intrest_field()
{
ListItem l1 = new ListItem();
l1 = drpfield.Items.FindByValue("1");
l1.Attributes.Add("style", "color:gray;font-weight:bold;font-size:larger");
l1.Attributes.Add("disabled", "true");
//l1.Value = "-1";
ListItem l2 = drpfield.Items.FindByValue("2");
l2.Attributes.Add("style", "color:gray;font-weight:bold;font-size:larger");
l2.Attributes.Add("disabled", "true");
//l2.Value = "-1";
ListItem l3 = drpfield.Items.FindByValue("3");
l3.Attributes.Add("style", "color:gray;font-weight:bold;font-size:larger");
l3.Attributes.Add("disabled", "true");
//l3.Value = "-1";
}
如果有理由将值设置为-1,那么应该有办法以其他方式进行。
如果你保持`l1.Value =“ - 1”,你可以检查l1当然是否为null,但是在回发后它将为null并且不会应用属性。