Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GridView单元格未在RowCommand事件上注册任何控件_C#_Asp.net_Gridview_Rowcommand - Fatal编程技术网

C# GridView单元格未在RowCommand事件上注册任何控件

C# GridView单元格未在RowCommand事件上注册任何控件,c#,asp.net,gridview,rowcommand,C#,Asp.net,Gridview,Rowcommand,首先,我意识到这大部分也可以使用ItemTemplates来完成。如果我试图做的事情是不可能的,我会考虑使用它们。 以下是我进退两难的基本情况: 我在ASPX页面中有一个GridView,它加载在CodeBehind中。每行包含触发OnRowCommand事件的两个按钮。当有人单击编辑按钮时,我创建了一个TextBox对象,并将其添加到特定单元格的控件集合中 这个很好用 问题是,当用户单击Save按钮时,OnRowCommand再次触发,但单元格在Controls集合中注册了0项。我很确定这是在

首先,我意识到这大部分也可以使用ItemTemplates来完成。如果我试图做的事情是不可能的,我会考虑使用它们。

以下是我进退两难的基本情况:

我在ASPX页面中有一个GridView,它加载在CodeBehind中。每行包含触发OnRowCommand事件的两个按钮。当有人单击编辑按钮时,我创建了一个TextBox对象,并将其添加到特定单元格的控件集合中

这个很好用

问题是,当用户单击Save按钮时,OnRowCommand再次触发,但单元格在Controls集合中注册了0项。我很确定这是在回发之前发生的,所以我不确定为什么我不能访问TextBox控件


我在最初添加文本框后进行了检查,它在单元格中显示了1个控件。在加载带有文本框的页面和单击按钮之间,这些控件丢失了。谷歌帮不了多少忙。有什么想法吗?

您正在动态创建文本框,因此您必须在每次发帖时重新绑定网格,使您的文本框和id始终相同,并重新附加任何事件处理程序。

您正在动态创建文本框,因此您必须在每次发帖时重新绑定网格,将文本框和id设置为始终相同,并重新附加任何事件处理程序。

当用户单击编辑按钮时,您处于GridView的编辑模式。您还需要设置吗?

当用户单击编辑按钮时,您处于GridView的编辑模式。您还需要进行设置吗?

如果您正在动态创建控件,它们将在回发时始终消失,这意味着您必须在每个周期中不断创建它们


我个人建议坚持使用ItemTemplates,让自己从所有这些都会带来的麻烦中解脱出来。

如果你在动态创建控件,它们在回发时总是会消失,这意味着你必须在每个周期中不断创建它们


我个人建议坚持使用ItemTemplates,让自己从所有这些都会带来的麻烦中解脱出来。

在代码后面创建按钮时,您可以使用委托创建addhandler。处理程序将在row命令启动之前启动

 Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated

Dim btnsave As New ImageButton
If e.Row.RowType <> DataControlRowType.Pager And e.Row.RowType <>  DataControlRowType.Header Then
    AddHandler btnedit.Click, AddressOf btnedit_Click
    GridView1.Rows(i).Cells(8).Controls.Add(btndel)
end if

end sub

Public Delegate Sub ImageClickEventHandler(ByVal sender As Object, ByVal e As ImageClickEventArgs)
Sub btnedit_Click(ByVal sender As Object, ByVal e As ImageClickEventArgs)

//do whatever you want here.
//possibly a redirect to the current page so nothing else fires

end sub

在代码后面创建按钮时,可以使用委托创建addhandler。处理程序将在row命令启动之前启动

 Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated

Dim btnsave As New ImageButton
If e.Row.RowType <> DataControlRowType.Pager And e.Row.RowType <>  DataControlRowType.Header Then
    AddHandler btnedit.Click, AddressOf btnedit_Click
    GridView1.Rows(i).Cells(8).Controls.Add(btndel)
end if

end sub

Public Delegate Sub ImageClickEventHandler(ByVal sender As Object, ByVal e As ImageClickEventArgs)
Sub btnedit_Click(ByVal sender As Object, ByVal e As ImageClickEventArgs)

//do whatever you want here.
//possibly a redirect to the current page so nothing else fires

end sub

我没有意识到在回发过程中控件丢失了。结果只是从'Request.Form'对象中得到了我想要的值。仍然希望在不为所有内容创建模板字段的情况下更容易永久保存控件。我没有意识到控件在回发中丢失了。结果只是从'Request.Form'对象中得到了我想要的值。仍然希望在不为所有内容创建TemplateFields的情况下更容易永久化控件。我很欣赏代码示例,但最终我找到了另一个解决方案。谢谢。我很欣赏这个代码示例,但最后我找到了另一个解决方案。谢谢