应用了母版页,一点击按钮,下拉框中的项目就消失了不知道是怎么回事。。

解决方案 »

  1.   

    看看click的代码和pageload的代码吧
      

  2.   

    内容页
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                BindDropDownList();                       
                //DataSet ds = new DataSet();
                if (!string.IsNullOrEmpty(UserName))
                {                                                      //进入编辑状态 
                    user = userbll.GetUser(UserName);
                    if (user != null)
                    {
                        txtUserName.Text = user.UserName;
                        txtUserName.ReadOnly = true;
                        txtPosition.Text = user.Position;
                        txtRe.Text = user.Re;
                        drpRight.SelectedValue = user.RoleID.ToString();
                        btnApply.Text = "更新";
                    }
                }
                else
                {
                    txtUserName.ReadOnly = false;
                    btnApply.Text = "添加";
                }
            }
        }    /// <summary>
        /// 绑定权限下拉框
        /// </summary>
        protected void BindDropDownList()
        {
            drpRight.Items.Clear();
            drpRight.Items.Add(new ListItem("请选择角色", "0"));
            DataSet ds = rolebll.GetSysRole("");
            if (ds.Tables.Count != 0)
            {
                if (ds.Tables[0].Rows.Count > 0)
                {
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        drpRight.Items.Add(new ListItem(ds.Tables[0].Rows[i]["RoleName"].ToString(), ds.Tables[0].Rows[i]["RoleID"].ToString()));
                    }
                }
            }
        }模板页和一个用户控件里的Page_Load里面都没有内容
    拿出内容页作为一个单独页面,不放在Content里面是不会出现这个问题的。.aspx<asp:UpdatePanel ID="UpdatePanel1" runat="server">
                                                                            <ContentTemplate>                                                         
                                                                                        <div class="ManageLine">
                                                                                            <span class="ManageLineTitle">登录用户名:</span><span class="ManageLineInput">
                                                                                                <asp:TextBox ID="txtUserName" runat="server" MaxLength="20"></asp:TextBox></span><span class="ManageLineDesc"><asp:RequiredFieldValidator
                                                                                                        ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtUserName"
                                                                                                        Display="Dynamic" ErrorMessage="登录用户名不能为空!"></asp:RequiredFieldValidator>只能填写20位以内的英文字母以及0-9的数字。</span>
                                                                                                        <div class="clear">
                                                                                                        </div>
                                                                                        </div>                                                                                                                                              
                                                                                        <div class="ManageLine">
                                                                                            <span class="ManageLineTitle">权限:</span><span class="ManageLineInput"><asp:DropDownList
                                                                                                ID="drpRight" runat="server">
                                                                                            </asp:DropDownList></span><span class="ManageLineDesc">选择权限</span><div class="clear">
                                                                                            </div>
                                                                                        </div>
                                                                                        <div class="ManageLine">
                                                                                            <span class="ManageLineTitle">职务:</span><span class="ManageLineInput">
                                                                                                <asp:TextBox ID="txtPosition" runat="server" MaxLength="20"></asp:TextBox></span><span class="ManageLineDesc"><asp:RequiredFieldValidator
                                                                                                        ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtPosition"
                                                                                                        Display="Dynamic" ErrorMessage="职务不能为空!"></asp:RequiredFieldValidator>只能填写20位以内的英文字母以及0-9的数字。</span>
                                                                                                        <div class="clear">
                                                                                                        </div>
                                                                                        </div>
                                                                                        <div class="ManageLine">
                                                                                            <span class="ManageLineTitle">描述:</span><span class="ManageLineInput">
                                                                                                <asp:TextBox ID="txtRe" runat="server" MaxLength="100"
                                                                                                    TextMode="multiLine" Rows="3">
                                                                                                </asp:TextBox></span><span class="ManageLineDesc">最多100个文字</span><div class="clear">
                                                                                                </div>
                                                                                        </div>                                                                                    
                                                                                        <div class="ManageSub">
                                                                                            <asp:Button ID="btnApply" runat="server" CausesValidation="True" 
                                                                                                CssClass="Button01" Text="提交" onclick="btnApply_Click"></asp:Button>
                                                                                            <asp:Button ID="btnCancel" runat="server" CausesValidation="False" CssClass="Button01" Text="取消"></asp:Button></div>    
                                                                             <asp:Label ID="lblTest" runat="server"></asp:Label>
                                                                            </ContentTemplate>
                                                                        </asp:UpdatePanel>                         
      

  3.   

    这个我调试过多次了,单独将这部分拿到一个页面中调试过,就是不放在模板页中,是不会有问题的。放在模板页中的话就有问题,调试时发现它会执行MasterPage的Page_Load以及自定义控件里的Page_Load。不知道除了DropdownList1.Items.Clear()的话,还有什么情况会导致下拉框的记录消失呢?
      

  4.   

    点击按钮会重新刷新页面的代码在这里面,你重新刷新是不执行的,
    if (!Page.IsPostBack)
            {
              代码;
            }把 BindDropDownList(); 这句放你按钮点击事件里就可以了
      

  5.   

    取完值在绑定啊BindDropDownList();把这个放到按钮点击事件最后
      

  6.   

    在PAGE标记中将:EnableViewState="true"设为真试下
      

  7.   

     if (!Page.IsPostBack)
            {
          BindDropDownList();
      } protected void Button1_Click(object sender, EventArgs e)
        {
          代码....
           BindDropDownList();
       }
      

  8.   


    现在我是根本取不到值。    #region    提交    protected void btnApply_Click(object sender, EventArgs e)
        {
            if (UserName.Length != 0)
            {
                user = userbll.GetUser(UserName);
            }
            user.UserName = Strings.SqlFilterString(txtUserName.Text.ToString().Trim());
            user.RoleID = Convert.ToInt32(drpRight.SelectedValue.ToString());   //这一句就会提示报错,说未将对象引用到实例,说明根本取不到值
            user.Position = Strings.SqlFilterString(txtPosition.Text.ToString().Trim());
            user.Re = Strings.SqlFilterString(txtRe.Text.ToString().Trim());
            if (btnApply.Text == "添加")   //添加帐户
            {
                user.Password = MD5.ToMD5("0000");
                if (userbll.InsertUser(user))
                {
                    Show("添加成功!");
                }
            }
            else                           //编辑帐户
            {
                if (userbll.UpdateUser(user))
                {
                    Show("修改成功!");
                }
            }
        }    #endregion
    而且正常情况下,你在第一次进入页面if(!Page.IsPostBack)里绑定了下拉框数据后,如果没有做DropDownList.Items.Clear()是不会消失的,就好像GridView一样,你进入页面时将它绑定,难道之后你点一次按钮就要绑定一次,不绑定它就会消失吗?不会的。。
      

  9.   

    肯定是没写IF(!POSTBACK)
    {
      
    }
    这样也会清除数据
      

  10.   

    其实这一块单独提出来是可以使用的,就是不知道为什么放到MasterPage里一点按钮下拉框中的项目就没有了。大家有没有碰到类似的情况?
      

  11.   


     protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Edit")
            {        }
            if (e.CommandName == "Delete")
            {        }
        }                                                                                <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
                                                                                    CssClass="aa06" Width="100%" 
                                                                                    GridLines="None" AllowSorting="True" DataKeyNames="NodeID" 
                                                                                            onrowcommand="GridView1_RowCommand">
                                                                                    <Columns>                               
                                                                                        <asp:BoundField DataField="NodeID" HeaderText="节点编号"/>
                                                                                        <asp:BoundField DataField="NodeName" HeaderText="节点名称"/>
                                                                                        <asp:BoundField DataField="Position" HeaderText="处理人" />
                                                                                        <asp:BoundField DataField="DealWay" HeaderText="处理方式" />
                                                                                        <asp:BoundField DataField="Re"   HeaderText="备注" />                 
                                                                                        <asp:TemplateField HeaderText="操作" ShowHeader="False">
                                                                                            <ItemTemplate>
                                                                                                 <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandArgument='<%#Eval("NodeID") %>'
                                                                                                    Text="编辑" CommandName="Edit"></asp:LinkButton>
                                                                                                <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandArgument='<%#Eval("NodeID") %>'
                                                                                                    Text="删除" CommandName="Delete" OnClientClick="是否确认删除!"></asp:LinkButton>
                                                                                            </ItemTemplate>
                                                                                        </asp:TemplateField>
                                                                                    </Columns>
                                                                                    <PagerSettings Visible="False" />
                                                                                    <HeaderStyle CssClass="listTitle" HorizontalAlign="Left" />
                                                                                    <AlternatingRowStyle CssClass="list01" />以上代码,为何点击GridView一行中的编辑按钮,不跳到后台的RowCommand方法中,反而GridView消失了?
      

  12.   

    RadioButtonList、CheckBoxList都取不到值。。晕了!~~
      

  13.   

    解决了!~~下了几个别人写的程序反复对照才发现是EnableViewState这个属性值设为了false的问题。。
    实在是水平太差,对这个不怎么了解。上面有朋友回复谈到了这方面也没有认真琢磨,搞得自己莫名奇妙了好几天。实在感谢各位的回答,谢谢!