日期:2014-05-17  浏览次数:20430 次

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

------解决方案--------------------
很简单的一个功能
前台
<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();
}
}
}
------解决方案--------------------
楼主可以在学号列模版中放入一个lable和一个linkbutton,其中label绑定stuID的值,Gridview的DataKeyName绑定rs_ID;点击linkbutton到你修改stuID的页面或要实行的代码,用lable是否绑定到值来控制linkbutton的显示或隐藏!看下面代码:
C# code

// 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;   
                    }
                }
            }
           
        }