以下给部分代码,行家一看就懂的:
<asp:DataList ID= "DataList1 " runat= "server " DataKeyField= "ColumnId "
....
<td colspan= "3 " >
<asp:GridView ID= "GridView1 " runat= "server " DataKeyNames= "TextId " AutoGenerateDeleteButton= "True "
...
现在是这样,我在作为子控件的GridView1里开了删除功能,也就是上面的属性:AutoGenerateDeleteButton= "True " 当我单击 "删除 "按钮,执行删除操作时,执行以下方法(系统自己给的,呵呵): protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
GridView newGridView = (GridView)this.DataList1.FindControl( "GridView1 ");
string textid = newGridView.DataKeys[e.RowIndex].Value.ToString();//取得当前发生行的主键值
....
}
嗯,就是当我取子控件里的当前发行事件的记录行的主键值时,就显示出错了,说什么 "没有用NEW给对象引用 "之类的.
string textid = newGridView.DataKeys[e.RowIndex].Value.ToString();//取得当前发生行的主键值
这个语句我也不知道对不对,我靠VS的智能感知来写出来的,可能取当前发生行的值不是这样写,哪位朋友懂啊?
上次我第一次发贴时,有好心人帮解答,虽然没有把问题解决,但是我非常感谢“JGood”,我的分不多,等我解决这个问题后,如果我系统里还有分,我会把http://topic.csdn.net/u/20071030/01/F4F89B83-3DAA-4D51-B08F-A3EA369AFA7C.html这个贴给结了,我也知道,在这里赚分不容易。只要问题能解决,贴子肯定结,这次加到50分。
<asp:DataList ID= "DataList1 " runat= "server " DataKeyField= "ColumnId "
....
<td colspan= "3 " >
<asp:GridView ID= "GridView1 " runat= "server " DataKeyNames= "TextId " AutoGenerateDeleteButton= "True "
...
现在是这样,我在作为子控件的GridView1里开了删除功能,也就是上面的属性:AutoGenerateDeleteButton= "True " 当我单击 "删除 "按钮,执行删除操作时,执行以下方法(系统自己给的,呵呵): protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
GridView newGridView = (GridView)this.DataList1.FindControl( "GridView1 ");
string textid = newGridView.DataKeys[e.RowIndex].Value.ToString();//取得当前发生行的主键值
....
}
嗯,就是当我取子控件里的当前发行事件的记录行的主键值时,就显示出错了,说什么 "没有用NEW给对象引用 "之类的.
string textid = newGridView.DataKeys[e.RowIndex].Value.ToString();//取得当前发生行的主键值
这个语句我也不知道对不对,我靠VS的智能感知来写出来的,可能取当前发生行的值不是这样写,哪位朋友懂啊?
上次我第一次发贴时,有好心人帮解答,虽然没有把问题解决,但是我非常感谢“JGood”,我的分不多,等我解决这个问题后,如果我系统里还有分,我会把http://topic.csdn.net/u/20071030/01/F4F89B83-3DAA-4D51-B08F-A3EA369AFA7C.html这个贴给结了,我也知道,在这里赚分不容易。只要问题能解决,贴子肯定结,这次加到50分。
GridView是嵌套的,所以GridView1是在DataList的某个DataListItem之下的,所以this.DataList1.FindControl( "GridView1 "); 返回的是null你不需要得到当前对象所在的GridView,你可以用e.Keys来访问你要的数据,或者把sender转换成 GridView:GridView newGridView = (GridView)sender;
但从表面意思理解:从整个datalist直接寻找gridview
和你要删除的那行扯不上什么关系吧?
void GridView1_RowDeleting(object sender,GridViewDeleteEventArgs e) GridView1_RowDeleting 原来sender的父控件是GridView,不是Button,怪不得我老是转换不成功。