zoukankan      html  css  js  c++  java
  • Asp.net中慎用Page.DataBind()

    问题代码

    Default.aspx:

    代码
    <asp:DropDownList ID="ddlTradingServiceType" CssClass="s_w90 m-r0" runat="server"
            EnableViewState
    ="false">
            
    <asp:ListItem Value="-1">全部</asp:ListItem>
            
    <asp:ListItem Value="consignment">寄售交易</asp:ListItem>
            
    <asp:ListItem Value="escort">担保交易</asp:ListItem>
            
    <asp:ListItem Value="id">帐号交易</asp:ListItem>
            
    <asp:ListItem Value="api">官方合作交易</asp:ListItem>
            
    <asp:ListItem Value="cardservice">点卡交易</asp:ListItem>
        
    </asp:DropDownList><a href="?ts=nodefine">跳跳</a>

    Default.aspx.cs:

    代码
    protected void Page_Load(object sender, EventArgs e)
            {
                
    if (!string.IsNullOrEmpty(Request.QueryString["ts"]))
                {
                    ddlTradingServiceType.SelectedValue 
    = Request.QueryString["ts"];
                    ddlTradingServiceType.DataBind();
                }
            }

    当页面点击"跳跳"时,页面会报错


    原因在我给dllTradingServiceType.SelectedValue赋值后,调用了DataBind(),而在控件数据绑定的时候,服务会发现dllTradingServiceType的Items集合中没有Value为nodefine的项,故报无效SelectedValue的错误。往往在写程序时我们会给DropDownList控件的SelectedValue赋值一个不存在的Value,如果我们不调用DataBind(),服务器是不会检测项目列表的,故不会出错,事实上这种写法存在问题。MSDN对Page.DataBind()的解释:
    Binds a data source to the invoked server control and all its child controls.

    Remarks
    Use this method to bind data from a source to a server control. This method is commonly used after retrieving a data set through a database query.

    Note   When called on a server control, this method resolves all data-binding expressions in the server control and in any of its child controls.

    This method is commonly overridden when creating custom templated data-bound controls. For more information, see Developing a Templated Data-Bound Control.

    For more information about data binding to server controls, see Data Binding Expression Syntax.

    作者:Olar Tan
    出处:http://www.cnblogs.com/olartan
    ♪:没有做不到的 只有偷懒而错过的 ♪

  • 相关阅读:
    MySQL表之间的关系概述
    网路通信简介
    多态与鸭子类型
    组合与类继承
    类与对象的属性与方法以及封装
    对象与类的初始
    2018.12.12
    2018.12.9浮动布局,盒子显隐,定位,z-index,流式布局,小米开头
    2018.12.8浮动布局,display总结,overflow,清浮动
    2018.12.7边界圆角redius,背景图设置,平铺,精灵图,盒子伪类索引
  • 原文地址:https://www.cnblogs.com/olartan/p/1751505.html
Copyright © 2011-2022 走看看