当前位置:编程学习 > C#/ASP.NET >>

如何保持GridView控件内DropDownList的状态

DropDownList是用来控制每页的行数的,但是每次修改行数页面刷新后都会跳回默认值.
如能告知原理另送100分 --------------------编程问答-------------------- 不懂 帮顶 --------------------编程问答-------------------- DropDownList 的初始化的时候 要判断~!

like this:
 
page load 的时候。

if not page.ispostback then
 InitialDropDownList()

end if


原理与页面的生命周期有关,不是Dropdownlis控件的问题。
随便找本书。看页面生命周期就好了。 --------------------编程问答-------------------- DataBound事件中可以指定 --------------------编程问答-------------------- 进入模板列编辑,点DropDownList上面的小箭头,进入“编辑DataBings”,把和字段的绑定设置为双向绑定。
如果没有填充,则在DataRowBound事件中调用DropDownList的DataBind() --------------------编程问答-------------------- 把生成DropDownList列表内容的代码写在Page_Load里就可以了.
  protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                //初始化DropDownList
                LoadEnterprise();
            }

        }
 //初始化DropDownList
        public void LoadEnterprise()
        {
      DropListEnterprise.Items.Add("aaaa", "1");
        } --------------------编程问答-------------------- 你的控制显示行数的.如果你的行数是手填的话。.建议你还是用客户端的 空间 select 

因为你刷新的时候是刷新整个页面,,不是刷新局部的..肯定会变为初始的状态..建议你用AJAX 做这种效果

局部的刷新~~ --------------------编程问答--------------------

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        //找到Dropdownlist控件;
        //DropDownList Type_Ddl = (DropDownList)e.Row.FindControl("Type_Ddl");
        //Type_Ddl.SelectedValue = ((HiddenField)e.Row.FindControl("Type_Hdf")).Value;

        //DropDownlist的ListItem项必须包含数据库中全部的项,否则会出现"异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。"错误;
        //还要注意FindByValue,Items.FindByText的区别,如果下拉列表框由value就用FindByValue;
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (e.Row.RowIndex == GridView1.EditIndex)
            {

                DataRowView rowItem = (DataRowView)e.Row.DataItem;

                DropDownList clsName = (DropDownList)e.Row.FindControl("Type_Ddl");
                if (rowItem["type"] != DBNull.Value)
                {
                    clsName.Items.FindByText(rowItem["type"].ToString()).Selected = true;
                }

            }
        }

    }


--------------------编程问答-------------------- 每次修改的话相当于重新初始化了窗体~~~
所以它会默认值,你可以考虑将当前的状态保存一下,然后在初始的时候将当前你想要的状态再赋值进去。 --------------------编程问答-------------------- DropDownList里的数据是事先就有的,所以没办法绑定啊。 --------------------编程问答-------------------- 学习了,谢谢楼主 --------------------编程问答-------------------- 同意5楼 ,可以使用局部刷新的方式
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,