RT,有一个学生信息数据表,其中有一个学号(stu_ID)列和一个记录索引(rs_ID,自动编号) 列。现在想把学生信息表中的记录绑定到GridView中,其中有一个问题:
    绑定时若记录的学号(stuID)列为空值(null),则在GridView的记录行中显示“设置学号”链接,该链接传递记录索引(rs_ID)到另一页面,若学号(stuID)列不是空值,则在GridView的记录行中显示学号字段内容。
请教各位如何实现呢?
菜鸟现真诚请教论坛各位大虾给出解决方法!非常感谢!

解决方案 »

  1.   

    在学号列中加入一个linkbutton,后台绑定时候判断这个linkbutton是否要显示,然后linkbutton点击事件中去跳转页面就可以了。可以自己试着去写写看,挺简单的一个功能。
      

  2.   

    很简单的一个功能
    前台
    <asp:GridView ID="GridView1" runat="server" 
                onrowdatabound="GridView1_RowDataBound">
                <Columns>
                    <asp:TemplateField HeaderText="学号">
                    <ItemTemplate>
                        <div id="divstuID" runat="server"></div></ItemTemplate>
                    </asp:TemplateField>
                   --这里放置你需要显示的列
                </Columns>
            </asp:GridView>
    后台:
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                HtmlGenericControl divstuID = e.Row.FindControl("divstuID") as HtmlGenericControl;
                DataRowView drv = e.Row.DataItem as DataRowView;
               --如果你绑定的不是datatable而是List<实体类>的话,就转换是实体,后面的
    //drv["stuID"]用drv.属性名
                if (drv["stuID"].ToString().Trim() == string.Empty)
                {
                    divstuID.InnerHtml = string.Format("<a target='_blank' href='EditStuID.aspx?id={0}'>设置学号</a>",drv["rs_ID"].ToString());
                }
                else
                {
                    divstuID.InnerHtml = drv["stuID"].ToString();
                }
            }
        }
      

  3.   

    这个有多种方式,可以在RowDataBound中判断,加入需要的部分,也可以写个public的函数,绑定到gridview中相应的部分,通过函数判断加入需要的部分,甚至js,具体自己去做
      

  4.   

    楼主可以在学号列模版中放入一个lable和一个linkbutton,其中label绑定stuID的值,Gridview的DataKeyName绑定rs_ID;点击linkbutton到你修改stuID的页面或要实行的代码,用lable是否绑定到值来控制linkbutton的显示或隐藏!看下面代码:// linkbutton是否显示的方法,你可以放在Page_load事件里
     protected void  XS()
            {
                for (int i = 0; i < GridView1.Rows.Count; i++)
                {
                    label lb1 = (label)(GridView1.Rows[i].FindControl("label1"));
                    if  if(!string.IsNullOrEmpty(lb1.Text)) //如果stuID不为空则linkbutton1隐藏,否则显示            
                     {
                             linkbutton1.Visible = false;           
                      }
                        else
                        {
                           linkbutton1.Visible = true;   
                        }
                    }
                }
               
            }