CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

GridView中可否实现单击一行等效于触发SelectButton事件

楼主coolstone007(coolstone007)2006-07-18 17:38:54 在 .NET技术 / ASP.NET 提问

在GridView中添加<asp:CommandField   ShowSelectButton="True"   />,点击选择按钮可选择一行。此时,GridView.SelectedRow.RowIndex等于对应选中的行。  
          我想通过单击行来实现这一效果,而不添加SelectButton。这样我就可以通过GridView.SelectedRow.RowIndex来获取我要的那一行数据。  
   
          请问如何实现?谢谢!  
   
          我看页面生成的javascript,在后台中添加如下代码,可实现,不过似乎不好,要将页面设置为   enableEventValidation="false"   :  
          protected   void   GridView_RowDataBound(object   sender,   GridViewRowEventArgs   e)  
          {  
                  if   (e.Row.RowType   ==   DataControlRowType.DataRow)  
                  {                                              
                          e.Row.Attributes.Add("style",   "cursor:hand;");  
                          e.Row.Attributes.Add("onclick",   string.Format("__doPostBack('GridView',   'Select${0}');",   e.Row.DataItemIndex));  
                  }  
          }  
  问题点数:100、回复次数:12Top

1 楼yefeihaha(学习)回复于 2006-07-18 19:18:35 得分 3

protected   void   GridView1_RowCreated(object   sender,   GridViewRowEventArgs   e)  
  应该放在这里面Top

2 楼sandsboy(竹子)回复于 2006-07-18 19:44:32 得分 5

protected   void   GridView_RowDataBound(object   sender,   GridViewRowEventArgs   e)  
          {  
                  if   (e.Row.RowType   ==   DataControlRowType.DataRow)  
                  {                                              
                          e.Row.Attributes.Add("onclick",   "highlight(this);");  
                  }  
          }  
   
   
  function   highlight(o){  
      e   =   o;  
      o   =   o.parentElement;  
      while(o!=null   &&   o.tagName   !=   "TABLE"){  
            o   =   o.parentElement;  
      }  
      for(var   i   =0;i<o.rows.length;i++){  
          o.rows[i].style.backgroundColor   =   "white";  
      }  
      e.style.backgroundColor   =   "red";  
  }Top

3 楼coolstone007(coolstone007)回复于 2006-07-19 13:12:23 得分 0

我是想和CommandField无关,又达到CommandField的效果。利用单击某一数据行,而不是单击CommandField。Top

4 楼antiking(生活就象拉大便有时顺畅有时不顺畅.)回复于 2006-07-19 13:54:55 得分 2

e.Row.Attributes.Add("onclick",   "this.style.backgroundColor='Red'")   ;Top

5 楼guodawu($)回复于 2006-07-19 14:11:44 得分 2

学习,学习Top

6 楼flyin2006(败家子__不再误人子弟)回复于 2006-07-19 14:29:52 得分 2

用服务器代码不可能   用脚本Top

7 楼net_lover(【孟子E章】)回复于 2006-07-19 14:51:02 得分 80

<%@   Page   language="C#"   enableEventValidation="false"%>  
   
  <script   runat="server">  
   
      void   CustomersGridView_SelectedIndexChanged(Object   sender,   EventArgs   e)  
      {  
          GridViewRow   row   =   CustomersGridView.SelectedRow;  
          Message.Text   =   "You   selected   "   +   row.Cells[2].Text   +   ".";  
           
      }  
   
      protected   void   CustomersGridView_RowDataBound(   object   sender,   GridViewRowEventArgs   e   )  
      {  
          if   (e.Row.RowType   ==   DataControlRowType.DataRow)  
          {  
              e.Row.Cells[0].Attributes.Add("style",   "display:none");  
              e.Row.Attributes.Add("onclick",   "this.cells[0].childNodes[0].click()");  
          }  
      }  
  </script>  
   
  <html>  
      <body>  
          <form   id="Form1"   runat="server">  
            <asp:gridview   id="CustomersGridView"    
                datasourceid="CustomersSource"  
                allowpaging="True"    
                selectedindex="0"  
                onselectedindexchanged="CustomersGridView_SelectedIndexChanged"  
                runat="server"   OnRowDataBound="CustomersGridView_RowDataBound">                                  
                <selectedrowstyle   backcolor="LightCyan"         forecolor="DarkBlue"  
                    font-bold="True"/>                                      
                <Columns>  
                    <asp:CommandField   ShowSelectButton="True"/>  
                </Columns>  
            </asp:gridview>  
              <br/>                          
              <asp:label   id="Message"  
                  forecolor="Red"  
                  runat="server"/>  
              <asp:sqldatasource   id="CustomersSource"  
                  selectcommand="SELECT   [CustomerID],   [CompanyName],   [Address],   [City],   [PostalCode],   [Country]   FROM   [Customers]"  
                  connectionstring="<%$   ConnectionStrings:NorthwindConnectionString   %>"    
                  runat="server"/>                          
          </form>  
      </body>  
  </html>  
  Top

8 楼net_lover(【孟子E章】)回复于 2006-07-19 14:58:19 得分 0

sqldatasource   可以换成其它的试验Top

9 楼asuntir123()回复于 2006-07-19 15:09:05 得分 6

一下代码只是供你参考:  
  private   void   grdData2_ItemDataBound(object   sender,   System.Web.UI.WebControls.DataGridItemEventArgs   e)  
  {  
  if(e.Item.ItemType   ==   ListItemType.Item   ||   e.Item.ItemType   ==   ListItemType.AlternatingItem   ||   e.Item.ItemType==ListItemType.EditItem)  
  {  
  e.Item.Attributes.Add("onmouseover",   "javascript:   TRBackColor   =   this.style.backgroundColor;   this.style.backgroundColor   =   TRMoveColor;");  
  e.Item.Attributes.Add("onmouseout",   "javascript:   this.style.backgroundColor   =   TRBackColor;");  
  e.Item.Style.Add("cursor",   "mouse");  
                                                                            e.Item.Attributes.Add  
  ("onclick",   "javascript:   某个javascript函数();");  
   
   
  }  
  }Top

10 楼net_lover(【孟子E章】)回复于 2006-07-19 15:12:58 得分 0

<%@   Page   language="C#"   enableEventValidation="false"%>  
  <script   runat="server">  
      void   CustomersGridView_SelectedIndexChanged(   Object   sender,   EventArgs   e   )  
      {  
          GridViewRow   row   =   CustomersGridView.SelectedRow;  
          Message.Text   =   "您选择的是:"   +   row.Cells[2].Text   +   ".";  
      }  
      protected   void   CustomersGridView_RowDataBound(   object   sender,   GridViewRowEventArgs   e   )  
      {  
          e.Row.Cells[0].Attributes.Add("style",   "display:none");  
          if   (e.Row.RowType   ==   DataControlRowType.DataRow)  
          {              
              e.Row.Attributes.Add("onclick",   "this.cells[0].childNodes[0].click()");  
          }  
      }  
      protected   void   Page_Load(   object   sender,   EventArgs   e   )  
      {  
          CustomersGridView.HeaderRow.Cells[0].Attributes.Add("style",   "display:none");  
          CustomersGridView.FooterRow.Cells[0].Attributes.Add("style",   "display:none");  
      }  
  </script>  
  <html>  
  <body>  
      <form   id="Form1"   runat="server">  
          <asp:GridView   ID="CustomersGridView"   DataSourceID="CustomersSource"   AllowPaging="True"  
              SelectedIndex="0"   OnSelectedIndexChanged="CustomersGridView_SelectedIndexChanged"  
              runat="server"   OnRowDataBound="CustomersGridView_RowDataBound">  
              <SelectedRowStyle   BackColor="LightCyan"   ForeColor="DarkBlue"   Font-Bold="True"   />  
              <Columns>  
                  <asp:CommandField   ShowSelectButton="True"   />  
              </Columns>  
          </asp:GridView>  
          <br   />  
          <asp:Label   ID="Message"   ForeColor="Red"   runat="server"   />  
          <asp:SqlDataSource   ID="CustomersSource"   SelectCommand="SELECT   [CustomerID],   [CompanyName],   [Address]   FROM   [Customers]"  
              ConnectionString="Server=(local);Database=Northwind;Trusted_Connection=True;"   runat="server"   />  
      </form>  
  </body>  
  </html>  
  Top

11 楼coolstone007(coolstone007)回复于 2006-07-20 13:27:10 得分 0

明白了。关键就是this.cells[0].childNodes[0].click()。  
  我就是不知道怎么通过客户端脚本触发这个事件。  
  Top

12 楼coolstone007(coolstone007)回复于 2006-07-20 13:31:48 得分 0

谢谢!Top

相关问题

关键词

得分解答快速导航

  • 帖主:coolstone007
  • yefeihaha
  • sandsboy
  • antiking
  • guodawu
  • flyin2006
  • net_lover
  • asuntir123

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo