asp.net面板控制可见性问题

本文关键字:控制 可见性问题 net asp | 更新日期: 2023-09-27 17:59:52

我编写了一个代码,用于检查唯一ID可用性状态。。如果ID可用,则应使面板可见,否则面板可见性将被隐藏。但它不起作用。如果我在页面加载中将面板可见性设置为false,它会起作用。。但文本框的文本更改事件中的面板可见性代码不起作用。在我的视图页面中,脚本管理器用于更新更新面板中的内容。我做错了什么。

<asp:ScriptManager ID="scriptmanager1" runat="server">
</asp:ScriptManager>
<div>
<asp:UpdatePanel ID="PnlUsrDetails" runat="server">
   <ContentTemplate>
     <table>
       <tr>
           Enter unique no: <asp:TextBox ID="txtUniqueNo" runat="server" AutoPostBack="true" ontextchanged="txtUniqueNo_TextChanged"/>      
       </tr>
       <tr>
           <div id="checkusername" runat="server"  Visible="false">
              <asp:Image ID="imgstatus" runat="server" Width="17px" Height="17px"/>
              <asp:Label ID="lblStatus" runat="server"></asp:Label>
           </div>
       </tr>
     </table>
    </ContentTemplate>
</asp:UpdatePanel>
<asp:Panel ID="Panel1" runat="server">
          <div>Panel content</div>
</asp:Panel>

服务器端代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.Page.IsPostBack)
    {
        Panel1.Visible = false; 
        PopulateCategory();
        getSubCategories(CategoryDropDownList.SelectedValue);
        //CategoryDropDownList_SelectedIndexChanged(null, null);
    }
}
protected void txtUniqueNo_TextChanged(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(txtUniqueNo.Text))
    {
        OdbcConnection conn = new OdbcConnection(DB.DatabaseConnString());
        if (conn.State == ConnectionState.Open)
            conn.Close();
        conn.Open();
        OdbcCommand cmd = new OdbcCommand("select * from gallery where unique_no='" + txtUniqueNo.Text + "'", conn);
        OdbcDataReader dr = cmd.ExecuteReader();
        if (dr.HasRows)
        {
            checkusername.Visible = true;
            Panel1.Visible = false;
            imgstatus.ImageUrl = "~/images/unavailable.png";
            lblStatus.Text = "Unique Id Already Taken";
        }
        else
        {
            try
            {
                checkusername.Visible = true;
                Panel1.Visible = true;
                imgstatus.ImageUrl = "~/images/tick.png";
                lblStatus.Text = "Unique Id  Available";
            }
            catch (Exception ex)
            {
                string mess = ex.Message;
            }
        }
    }
    else
    {
        checkusername.Visible = false;
    }
}

我的文件上传也在更新面板中,它在上传时丢失了文件。建议我使用任何替代方法来实现此功能。。。感谢

asp.net面板控制可见性问题

有问题的原因是控件未呈现(visible=false),并且之前未保存任何视图状态。尝试隐藏和显示风格:

第一:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.Page.IsPostBack)
        {
            //Panel1.Visible = false; Comment
            PopulateCategory();
            getSubCategories(CategoryDropDownList.SelectedValue);
            //CategoryDropDownList_SelectedIndexChanged(null, null);
        }
    }

protected void txtUniqueNo_TextChanged(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(txtUniqueNo.Text))
    {
        OdbcConnection conn = new OdbcConnection(DB.DatabaseConnString());
        if (conn.State == ConnectionState.Open)
            conn.Close();
        conn.Open();
        OdbcCommand cmd = new OdbcCommand("select * from gallery where unique_no='" + txtUniqueNo.Text + "'", conn);
        OdbcDataReader dr = cmd.ExecuteReader();
        if (dr.HasRows)
        {
            checkusername.Visible = true;
           Panel1.Style.Add("display", "none");
            imgstatus.ImageUrl = "~/images/unavailable.png";
            lblStatus.Text = "Unique Id Already Taken";
        }
        else
        {
            try
            {
                checkusername.Visible = true;
                Panel1.Style.Add("display", "block");
                imgstatus.ImageUrl = "~/images/tick.png";
                lblStatus.Text = "Unique Id  Available";
            }
            catch (Exception ex)
            {
                string mess = ex.Message;
            }
        }
    }
    else
    {
        checkusername.Visible = false;
    }
}

文件上传控制将无法在更新面板中工作,在这种情况下,它肯定会丢失选定的文件。既然你已经要求另一种方法。一种方法是使用jquery检查唯一不可用性。这里有一个完美的工作链接Check UserName Availability jquery来检查用户名的可用性。使用此示例检查唯一编号。
Ajax有成功和错误方法,所以您可以将表单放置在具有唯一id的div中,并在Ajax结果上切换其可见性。为了庆祝ajax的成功,您可以显示div的存在形式。这将消除使用脚本管理器和更新面板的需要。