下面的代碼產生在這條線上href.NavigateUrl = "foo.aspx?id=" + id;
空引用錯誤當我改變DropDownList的選擇,而不是當我輸入ID作爲查詢字符串參數。這似乎與事件的順序有關,但我不確定是什麼,或者如何解決它。的FindControl上看不見的面板中控制產生空引用錯誤
的.aspx
<asp:Panel ID="Panel1" runat="server">
<asp:DropDownList ID="DropDownList1" runat="server"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="True">
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2"></asp:ListItem>
</asp:DropDownList>
</asp:Panel>
<br />
<asp:Panel ID="Panel2" runat="server" Visible="false">
<asp:LoginView ID="LoginView1" runat="server">
<RoleGroups>
<asp:RoleGroup Roles="superadmin">
<ContentTemplate>
<asp:HyperLink runat="server" ID="HyperLink1">HyperLink</asp:HyperLink>
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>
</asp:LoginView>
</asp:Panel>
.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["id"] != null)
{
if (!String.IsNullOrEmpty(Request.QueryString["id"]))
{
Panel1.Visible = false;
SetHref(Request.QueryString["id"]);
}
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
SetHref(DropDownList1.SelectedValue);
}
protected void SetHref(string id)
{
Panel2.Visible = true;
HyperLink href = (HyperLink)LoginView1.FindControl("HyperLink1");
href.NavigateUrl = "foo.aspx?id=" + id;
href.Text = href.NavigateUrl;
}
我發現一對夫婦變通的:是Panel2的默認visbility設置爲true是一個,動人的超級鏈接是Panel2之外並直接改變其知名度是其他,但是那些都做正是我想要的,因爲有我在努力使人們看到其他控件/與叔一起無形他HyperLink。
有什麼想法?
超鏈接HREF =(超鏈接)LoginView1.FindControl( 「HyperLink1」);你的這條線路出現問題,他沒有獲得超鏈接控制, – Rahul 2013-05-01 04:39:57
我同意。你能提供關於如何正確定位它的任何建議嗎? – brainbolt 2013-05-01 05:51:12
而不是顯示屬性嘗試樣式顯示:無; – Rahul 2013-05-01 05:52:32