读书人

寻求一个解决办法~大家帮帮忙撒~

发布时间: 2011-12-25 23:21:20 作者: rapoo

寻求一个解决方法~~~~~大家帮帮忙撒~~
我在GridView的OnRowDataBound里面添加
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{

if (e.Row.RowType == DataControlRowType.DataRow)
{
string TheID = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();
string DivID = "Edit " + TheID;
e.Row.Attributes.Add( "onclick ", "GetEdit( ' " + DivID + " ') ");

Panel P1 = new Panel();//加载编辑控件的层
P1.ID = DivID;
P1.CssClass = "EditCss ";
P1.Width = 650;
EidDiv.Controls.Add(P1);

UserControl_EditWorkFlow EditWorkFlow;//加载编辑控件
EditWorkFlow = (UserControl_EditWorkFlow)LoadControl( "UserControl/EditWorkFlow.ascx ");
EditWorkFlow.wfid = TheID;
P1.Controls.Add(EditWorkFlow);

HyperLink MyHy = (HyperLink)EditWorkFlow.FindControl( "GiveUp ");//加载取消编辑按钮
MyHy.Text= " 取 消 ";
MyHy.CssClass = "Gb ";
MyHy.NavigateUrl = " ";
MyHy.Attributes.Add( "onclick ", "GetEditNo( ' " + DivID + " ') ");
}
}

想做到的效果就是单击任何一行,就显示一个层进行该行数据的编辑,然后单击可以取消编辑。
显示的层是动态添加的,层里的是一个ascx控件。ascx有一个属性就是wfid,单击行把该行ID取出来给这个控件实现编辑。

现在的问题是:
1:我加载页面后,直接翻到GridView的第二页,单击一行,显示出的编辑层内没有对该行数据进行绑定,而不翻页的时候第一页就可以绑定。
2:我单击编辑层上的确定,编辑完成后,在单击行,显示javascript错误,找不到对象。

要实现我想要的效果我觉得我的方法比较不好用啊,请问有经验的大哥们平时怎样解决啊?还有我出现这个错误1的原因是什么啊?我认为是GridView执行绑定的先后顺序的一些问题,我感觉我就不应该把对编辑控件的绑定传值放OnRowDataBound里面。可是放其他地方我不会啊。。。。。



[解决办法]
帮你顶一下。没有做过
[解决办法]
帮你顶一下
[解决办法]
========

我以前也想过这个问题 ..

这样想 是因为 我同时 做B/S 和 C/S 项目,所以吧 C/S中那一套 拿来到B/S 中用
C/S 中我们通常喜欢 点击一行..出现一个编辑窗体.然后保存.
但是B/S 中. 通常是在 绑定行的最后一列有一个按钮..要么在当前的行进行编辑. 要么转发页面进行编辑...
C/S B/S 实现起来 都 比较简单....如果你要吧C/S拿到B/S 或/B/S 拿到C/S 中用的话,

只会增加程序的难度..不会有 什么好的效果..我们也不会觉得你很牛比..

所以你那种做法 在实际开发当中 是要被否决的....

就相当于 一个,明明是 C/S 的项目..你用B/S 开发.....
[解决办法]
e.Row.Attributes.Add( "onclick ", "GetEdit( ' " + DivID.ClientID + " ') ");
[解决办法]
不好意思,没看清楚,上面的写错了
[解决办法]
e.Row.Attributes.Add( "onclick ", "GetEdit( ' " + DivID + " ') ");

MyHy.Attributes.Add( "onclick ", "GetEditNo( ' " + DivID + " ') ");

都能换成类似如下( "onclick ", "GetEdit( ' " + p1.ClientID + " ') ");看看行不行

读书人网 >asp.net

热点推荐