zoukankan      html  css  js  c++  java
  • ListView+DropdownList修改selectCommand实现条件筛选


     之前我以为实现这个功能很容易,之后才发现有很多问题要解决啊,花了一个晚上终于实现了,但是不知道是不是最好的办法。

    查了网上很多资料,就做一个总结。

    问题一:

    DropdownList动态绑定select提交表单之后任然是第一项。

    原因:因为提交表单之后页面会postback,就相当于页面再次实例化一样,所有控件重新生成,所以DropdownList又重新绑定数据,导致无论怎么提交,永远都是第一项~

    解决办法:绑定函数放在PAGE_LOAD()里,加上if(!isPostBack)。

            protected void Page_Load(object sender, EventArgs e)
            {
                if (!isPostBack)
                {
                    DataBind();
                }
            }


    问题二:

    如何实现DropdownList改变selectItem之后就postBack。而不用再放置一个确定按钮。

    解决办法:将DropdownList属性里的autoPostBack设置为true。

    问题三:

    DropdownList选择条件之后,ListView里面点击编辑,删除操作的都是最初selectcommand所返回的数据,导致条件选择后的编辑删除数据与选择的不一致。

    原因:和第一个问题相似,这是由于SQLDataSource中的SelectCommand是不被保留的。所以当您修改了SelectCommand后,点击了编辑后,ASP.net会自动再重新生成一次SqlDataSource,而他的SelectCommand依旧使用的还是原先默认设置中的select * from Table。所以他会从去数据库中,将所有的数据都都回来。

    解决办法:将SelectCommand加入到Session或是ViewState或是Cookie中,然后再每次DataSource_Load的时候,将内容付给SqlDataSource
    tips:默认的情况下ViewState 是可以被解密篡改,所以asp.net就没有把一些敏感东西放在ViewState里建议你加密ViewState
    你可以参考http://www.microsoft.com/china/MSDN/library/archives/library/DNAspnet/html/asp11222001.asp

    看代码吧~

     protected void DptDropDownList_SelectedIndexChanged(object sender, EventArgs e)
            {
    
                if (DptDropDownList.SelectedIndex == 0)
                {
                    ApplySqlDataSource.SelectCommand = "SELECT * FROM [Apply] ORDER BY [ID] DESC";
                    ViewState["SelectStr"] = "SELECT * FROM [Apply] ORDER BY [ID] DESC";
    
                }
    }
    protected void ApplySqlDataSource_Load(object sender, EventArgs e)
            {
                if (IsPostBack)
                {
                    ApplySqlDataSource.SelectCommand = ViewState["SelectStr"].ToString();
                }
            }


     

  • 相关阅读:
    Leetcode Unique Binary Search Trees
    Leetcode Decode Ways
    Leetcode Range Sum Query 2D
    Leetcode Range Sum Query
    Leetcode Swap Nodes in Pairs
    Leetcode Rotate Image
    Leetcode Game of Life
    Leetcode Set Matrix Zeroes
    Leetcode Linked List Cycle II
    CF1321A
  • 原文地址:https://www.cnblogs.com/leestar54/p/3013221.html
Copyright © 2011-2022 走看看