当前位置:  开发笔记 > 编程语言 > 正文

c#gridview行单击

如何解决《c#gridview行单击》经验,为你挑选了2个好方法。

当我点击GridView中的一行时,我想转到另一个页面,其中包含我从数据库中获取的ID.

在我的RowCreated事件中,我有以下行:

e.Row.Attributes.Add(
     "onClick",
     ClientScript.GetPostBackClientHyperlink(
          this.grdSearchResults, "Select$" + e.Row.RowIndex));

为了防止错误消息我有这个代码:

protected override void Render(HtmlTextWriter writer)
{
    // .NET will refuse to accept "unknown" postbacks for security reasons. 
    // Because of this we have to register all possible callbacks
    // This must be done in Render, hence the override
    for (int i = 0; i < grdSearchResults.Rows.Count; i++)
    {
        Page.ClientScript.RegisterForEventValidation(
                new System.Web.UI.PostBackOptions(
                    grdSearchResults, "Select$" + i.ToString()));
    }
    // Do the standard rendering stuff
    base.Render(writer);
}

如何为行添加一个唯一的ID(来自数据库),当我单击该行时,将打开另一个页面(如单击某个href),该页面可以读取该ID.



1> JohnB..:

马亭,

这是另一个带有一些漂亮的行突出显示和一个href样式游标的例子:

protected void gvSearch_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
    e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#ceedfc'");
    e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=''");
    e.Row.Attributes.Add("style", "cursor:pointer;");
    e.Row.Attributes.Add("onclick", "location='patron_detail.aspx?id=" + e.Row.Cells[0].Text + "'");
  }
}

上面的代码适用于.NET 3.5.但是,您不能将您的id列设置为Visible ="false",因为您将获得id键的空白查询字符串值:


  
    
    
    
    
    
  

因此,将第一列更改为:

将此css添加到页面顶部:


  

但要隐藏标题行的第一个单元格,请将其添加到代码隐藏中的gvSearch_RowDataBound():

if (e.Row.RowType == DataControlRowType.Header)
{
  e.Row.Cells[0].CssClass = "hide";
}

显然,您也可以在代码隐藏中隐藏id列,但这会导致标记中的文本比css类更多:

e.Row.Cells[0].Attributes.Add("style", "display:none;");
e.Row.Attributes.Add("style", "cursor:pointer;");



2> 小智..:

我有解决方案.

这就是我所做的:

if(e.Row.RowType == DataControlRowType.DataRow)
{
    e.Row.Attributes["onClick"] = "location.href='view.aspx?id=" + DataBinder.Eval(e.Row.DataItem, "id") + "'";
}

我已将前面的代码放在RowDataBound事件中.


Id cast e.Row.DataItem,Eval很慢,并且不允许重构以获取您可能已更改ID字段名称的事实
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有