完美解决ListView中事件ItemCreated中使用ClientID导致插入数据失败

于昨天晚上看到视频做到这个例子,但是发现始终有错误,在ListView的ItemCreated事件中使用了ClientID则会导致数据插入数据库失败。当点击插入按钮时,网页就像点击F5刷新一样,无任何数据插入数据库。而把ClientID删除,重新启动程序,插入数据一切正常。于今天在网上查了一下资料,发现原来这是微软的一个Bug地址如下http://connect.microsoft.com/VisualStudio/feedback/details/328680/problem-accessing-controls-clientid-on-asp-net-listviews-itemcreated但是好像现在都没有更新,但是这里面给了几个解决方案,对与一般性的问题都可以解决了,但是对于这个问题,还是没有很好的解决,通过查资料发现在ItemCreated事件中使用ClientID属性会将客户端渲染的id号改变,所以就出现了不能插入、与更新数据,下面给出解决方法,其实方法较简单(晕,当时怎么没有想到)

 
 
protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e)
 {
 
 
                  if (e.Item.ItemType == ListViewItemType.InsertItem)
                  {
                        DropDownList dp = (DropDownList)e.Item.FindControl("dpLinkType");
                        TextBox logurl = (TextBox)e.Item.FindControl("logurl");
                        if (dp != null && logurl != null)
                        {
                              string myid = "findid";
                              logurl.Attributes["findID"] = myid;//通过这里为要找到的服务端控件给一个自定义的标识,注意这里还是不能使用ClientID这个属性,不然就会有错
                              dp.Attributes["onchange"] = "dpchange(this,'"+myid+"')";//传到客户端的JQuery方法中也用这个表示,然后通过属性选择器就可以找到相应的控件了
                              if (dp.SelectedValue == "Text")
                              {
                                    logurl.Style["display"] = "none";
                              }
 
 
                        }
   }
 
客户端代码:
<script src="../js/jquery-1.4.2.js" type="text/javascript"></script>
      <script type="text/javascript">
            function dpchange(src, dpClientid) {
                  var $logo = $("input[findID=" + dpClientid + "]");//通过从服务器端传来的参数,找到相应的控件;          
                  if ($(src).val() == "Text") {
                        $logo.hide();                                       
                  }
                  else {
                        $logo.show();                                         
                  }
             }
      </script>

转载于:https://www.cnblogs.com/fanyf/p/3557761.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值