日期:2014-05-16  浏览次数:20311 次

JQuery处理ListView中绑定控件的ClientID问题,传入的值与渲染到浏览器器的ID不一致?该如何解决?
[code=C#][/code]
//后台处理代码,通过设置DropDownList的onchange事件,其处理响应函数为客户端JQuery的onLinkTypeChange()函数:
  protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e)
  {
  if (e.Item.ItemType == ListViewItemType.DataItem)
  {
  DataRowView rowView = (DataRowView)e.Item.DataItem;
  DropDownList ddlLinkType = (DropDownList)e.Item.FindControl("ddlLinkType");
  if (rowView != null && ddlLinkType != null)
  {
  var linkRow = (ASP.Net高级.综合应用案例.DAL.lvds1.T_LinksRow)rowView.Row;
  ddlLinkType.SelectedValue = linkRow.LinkType;
  }
  }
  if (e.Item.ItemType == ListViewItemType.InsertItem)
  {
  DropDownList ddlLinkType = (DropDownList)e.Item.FindControl("ddlLinkType");
  TextBox LogoURLTextBox = (TextBox)e.Item.FindControl("LogoURLTextBox");
  if (ddlLinkType != null && LogoURLTextBox != null)
  {
  ddlLinkType.Attributes["onchange"] = "onLinkTypeChange(this,'" + LogoURLTextBox.ClientID + "')";//通过参数,将当前处理对象和LogoURLTextBox的ClientID一块传入
  if (ddlLinkType.SelectedValue == "Text")
  {
  LogoURLTextBox.Style["display"] = "none";
  }
  }

  }


  }

//JQuery处理函数onLinkTypeChange():
<script src="../script/jquery-1.4.2.min.js" type="text/javascript"></script>
  <script type ="text/javascript">

  function onLinkTypeChange(src,logoTextId) {
  if ($(src).val() == "Text") {
  $("#"+logoTextId).hide();
  }
  else {
  $("#"+logoTextId).show();
  }
  }
  </script>
问题是传入的ClientID与浏览器客户端渲染的html代码的Id不一致。!!!!请问该如何解决?看过人家解决的办法。在DataBound等事件其ID能正确渲染,但问题是这些事件又不进行ListViewItemType.InsertItem处理!!能有其他啥办法解决嘛???


------解决方案--------------------
右键,查看源代码,不就可以看到生成的ID了吗

firebug 更方便