刚查了下留言板发现一个问题,在分页过程中,在第一页一切功能正常,在后面几页中编辑,删除都取不到正常的KEY,一直取的是第一页面的值,这个是李写的,他用到了HiddenField这个控件,隐藏了一些值,不管是第多少页的它都取的一样,汗,还算发现的早,要不周一被马主管发现了可就不得了了。查了些资料把这个BUG修复了,其中就用到了 datakeys和datakeynames也就顺便学习了下
在页面的代码出添加 <asp:GridView DataKeyNames="msg_id">这个后 代码中就改了一行
protected void lkbtnEdit_Click(object sender, EventArgs e)
{
LinkButton bt = new LinkButton();
bt = (LinkButton)sender;
TableCell tc = (TableCell)bt.Parent;
GridViewRow gvr = (GridViewRow)tc.Parent;
Session["MsgID"] = gvwDefault.DataKeys[gvr.RowIndex].Value;//这个是改动后的
// Session["MsgID"] =((HiddenField)gvwDefault.Rows[gvr.RowIndex].FindControl("HiddenMsgID")).Value;
//string a = gvr.Cells[1].Text;//获得ID
//doFlag.flag = "modify";
Session["doFlag"] = "modify";
trTitle.Visible = true;
txtTitle.Text = msg.getMessageTitle(Session["MsgID"].ToString());
btnAccept.Text = "修改";
txt_content.Text = msg.getMessageContent(Session["MsgID"].ToString());
txt_content.Text= txt_content.Text.Replace("<br>", "/r/n");
txt_content.Text = txt_content.Text.Replace(" ", " ");
if (HttpContext.Current.Request.Browser.JavaScript)
{
txt_content.Page.RegisterStartupScript("lkbtnEdit", "<script language='javascript'>document.forms[0]." +
txt_content.ClientID + ".focus();</script>");
}
else
{
txt_content.Attributes.Add("onclick", "document.all(" + txt_content.ClientID + ").focus();");
}
}
觉得datakeynames就是把这个键隐藏,不显示出来,但是代码中有必须用的,它就起了这个作用吧!
个人感觉有的时候我们不知道一个对象以及它的方法属性起什么作用的时候可以设置断点,进入调式状态,观察相应的值的变化就可以知道它的意思了,以及是起什么作用的了,反正看文章(不包括好的文章)写的烂的话可能会理解错的。