当前位置: 代码迷 >> ASP.NET >> netadvantage WebDataGrid的有关问题 小弟我点击排序后没有数据是咋回事
  详细解决方案

netadvantage WebDataGrid的有关问题 小弟我点击排序后没有数据是咋回事

热度:5104   发布时间:2013-02-25 00:00:00.0
netadvantage WebDataGrid的问题 我点击排序后没有数据是怎么回事
netadvantage WebDataGrid的问题 我单击表头排序后 就没有数据了,本人刚学习netadvantage 忘高手指点。 还有怎么设置选中一行改变背景颜色。。。。谢谢[size=18px][/size]

------解决方案--------------------------------------------------------
HTML code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4.aspx.cs" Inherits="jquerytest.WebForm4" %>    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    <html xmlns="http://www.w3.org/1999/xhtml" >  <head runat="server">      <title></title>      <script src="jquery-1.4.1-vsdoc.js" type="text/javascript"></script>      <script type="text/jscript">          $(document).ready(function() {              $("table").attr("bgColor", "#222222"); //设置表格的背景颜色               $("tr").attr("bgColor", "#3366CC"); //为单数行表格设置背景颜色               $("tr:even").css("background-color", "#CC0000"); //为双数行表格设置背颜色素              $("table").css("width", "300px"); //为表格添加样式,设置表格长度为300像素          });        </script>  </head>  <body>      <form id="form1" runat="server">      <div>      <table>              <tr><td>11111</td></tr>              <tr><td>22222</td></tr>              <tr><td>33333</td></tr>              <tr><td>44444</td></tr>              <tr><td>55555</td></tr>              <tr><td>55555</td></tr>      </table>        </div>      </form>  </body>  </html>
------解决方案--------------------------------------------------------
上面只是举例 原理还是不变的

C# code
在head中添加javascript 代码如下:<script lang=javascript> function sel(i) // 鼠标移上去后执行 {  eval(i+".style.background=#CCCC66"); // 更改行的颜色  eval(i+".style.cursor=hand"); // 鼠标移上去后变为手形 } function unsel(i) // 鼠标离开后执行 {  eval(i+".style.background="); } function clicktr(i) {  eval(i+".style.background=");  window.open("Edit.aspx?param="+i,"修改","height=490,width=710,resizable=no,scrollbars=no,status=no,toolbar=no,menubar=no,location=no,left=50,top=50"); }</script>在DataGrid的 ItemDataBound (当数据绑定时发生)事件中:private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)  {      if(e.Item.ItemType != ListItemType.Header)   {    string ID = e.Item.Cells[0].Text;     // 这里的第一列为数据绑定中的ID值(为修改页中传递参数方便,若多参数,也可按需要增加!)    e.Item.Attributes.Add("id",ID);    e.Item.Attributes.Add("onmouseover","sel(" + ID+ ")");        e.Item.Attributes.Add("onmouseout", "unsel(" + ID+ ")");    e.Item.Attributes.Add("onclick", "clicktr(" + ID+")");   }  }//****************************     结束    **********************************************//不过以上做法存在不便之处,如果在DataGrid中加个模板列,用于给用户提供选择操作(比如删除选中),此时用上述方法就会造成每次在选择CheckBox的时候也弹出新窗口(激发了onclick事件)比较差的解决办法:将原先的基于行的 Attributes 改为基于列.除掉模板列外,所有列都添加属性.比如模板列在第6列,可以这样修改 cs 文件private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)  {      if(e.Item.ItemType != ListItemType.Header)   {    string bm = e.Item.Cells[0].Text;    for(int i=0;i<5;i++)    {     e.Item.Cells[i].Attributes.Add("id","a"+i.ToString()+bm);     e.Item.Cells[i].Attributes.Add("onmouseover","sel(" +i.ToString()+","+ bm + ")");         e.Item.Cells[i].Attributes.Add("onmouseout", "unsel(" +i.ToString()+","+ bm + ")");     e.Item.Cells[i].Attributes.Add("onclick", "clicktr(" + bm +")");    } }}在 javascript 代码中: function sel(i,ID) {  for(var j=0;j<5;j++)  { eval("a"+j.toString()+ID+".style.background=#CCCC66"); eval("a"+j.toString()+ID+".style.cursor=hand");  }}function unsel(i,ID){   for(var j=0;j<5;j++)  { eval("a"+j.toString()+ID+".style.background="); }}function clicktr(i){  for(var j=0;j<5;j++)  {    eval("a"+j.toString()+i+".style.background=");    window.open("Edit.aspx?param="+i,"修改","height=490,width=710,resizable=no,scrollbars=no,status=no,toolbar=no,menubar=no,location=no,left=50,top=50"); }  }