我创建了一个gridview,然后每一项后面都有一个修改选项。在页面代码里面有一段代码如下:
<asp:HyperLinkField HeaderText="修改" DataTextFormatString="修改" Text="修改" DataNavigateUrlFields="studentID"
DataNavigateUrlFormatString="StudentModifyPage.aspx?student_ID={0}"
/>
我的本意是获取带这项里面的学生id信息,并且把这个id信息传递到StudentModifyPage页面里面,然后就可以对这一项进行修改,现在我想增加一个功能,就是在点击这个修改时,会将student_ID与我的用户属性相比较,既是这个student_ID所属的学校和我登陆用户所属的学校比较,如果相等则进入到StudentModifyPage页面,否则,就提示不能修改,请问这个该怎么做?想了半天没有找到好的方法,往高手指点,谢谢
<asp:HyperLinkField HeaderText="修改" DataTextFormatString="修改" Text="修改" DataNavigateUrlFields="studentID"
DataNavigateUrlFormatString="StudentModifyPage.aspx?student_ID={0}"
/>
我的本意是获取带这项里面的学生id信息,并且把这个id信息传递到StudentModifyPage页面里面,然后就可以对这一项进行修改,现在我想增加一个功能,就是在点击这个修改时,会将student_ID与我的用户属性相比较,既是这个student_ID所属的学校和我登陆用户所属的学校比较,如果相等则进入到StudentModifyPage页面,否则,就提示不能修改,请问这个该怎么做?想了半天没有找到好的方法,往高手指点,谢谢
<asp:TemplateField HeaderText="">
<ItemTemplate>
<a id="aEdit" runat="server">修改</a><asp:HiddenField ID="hdStudentId" runat="server" />
</ItemTemplate>
</asp:TemplateField>后台事件
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HtmlAnchor aEdit = e.Row.FindControl("aEdit") as HtmlAnchor;
HiddenField hdStudentId = e.Row.FindControl("hdStudentId") as HiddenField;
if (hdStudentId.Value == Session["school"].ToString())
{
aEdit.HRef = string.Format("StudentModifyPage.aspx?student_ID={0}",hdStudentId.Value);
}
else
{
aEdit.Attributes.Add("onclick","alert('不能修改');return false;");
}
}
}
SearchGridView.DataSource = dt;
SearchGridView.DataBind();
把数据先绑定到gridview中,这个时候我再在gridview显示的某一项中点击修改。如果我使用了RowDataBound方法的话会和我之前的点击按钮进行查询有冲突,因此个人感觉是不是使用这个时间不是很好?或者是我没有完全理解各位的意思?
GridView1.dataBind();
for(int i=0;i<GridView1.Rows.Count;i++)
{
GridView1.Rows[i].FindControl() //用这个方法找到你需要操作的控件,判断 这个是绑定后执行
}
我理解你的需求是:
1、当登录用户的student_ID和当前行的student_ID相等时显示(或启用)“修改”,当不同的时候不显示(或禁用)“修改”。
2、点击“修改”打开新页面StudentModifyPage.aspx并传递参数student_ID
总之就是登陆用户只能修改自己的信息。
方案如下:
前台GridView修改按钮处代码(替换原来的HyperLinkField)
<a target="_blank" href='StudentModifyPage.aspx?student_ID=<%# Eval("student_ID")%>'><%# (Eval("student_ID")).ToString()==StudentID?"修改":""%></a>
StudentID这个是当前登陆用户ID,下面说下这个变量怎么弄:
在页面后台代码设置一个全局变量string StudentID,然后在Page_Load事件中取到当前的student_ID赋值给StudentID,这样前台就能直接那么用了。