Private Sub DataGrid1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGrid1.SelectedIndexChanged End Sub 这个是VS.NET2003自动生成的,关键在于Handles DataGrid1.SelectedIndexChanged这段吧,只要你的DATAGRID和这段的名字一样应该就可以
我把程序试着放到ItemCommand事件里,但是测试结果依然是事件无法触发。
这是我整个ASPX页面的代码: Imports SystemImports System.Data.SqlClient Public Class jxz Inherits System.Web.UI.Page Dim Sqlcnn As SqlConnection#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected WithEvents Label2 As System.Web.UI.WebControls.Label Protected WithEvents Label3 As System.Web.UI.WebControls.Label Protected WithEvents Label4 As System.Web.UI.WebControls.Label Protected WithEvents Label5 As System.Web.UI.WebControls.Label Protected WithEvents Label6 As System.Web.UI.WebControls.Label Protected WithEvents Label7 As System.Web.UI.WebControls.Label Protected WithEvents Label8 As System.Web.UI.WebControls.Label Protected WithEvents Button1 As System.Web.UI.WebControls.Button Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox Protected WithEvents Label9 As System.Web.UI.WebControls.Label Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid Protected WithEvents DataGrid2 As System.Web.UI.WebControls.DataGrid '注意: 以下占位符声明是 Web 窗体设计器所必需的。 '不要删除或移动它。 Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: 此方法调用是 Web 窗体设计器所必需的 '不要使用代码编辑器修改它。 InitializeComponent() End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Sqlcnn = New SqlClient.SqlConnection Sqlcnn.ConnectionString = "workstation id=WIN2003;packet size=4096;user id=sa;Pwd=123456789;data source=""192.168.0.2"";pers" & _ "ist security info=False;initial catalog=sfxtdb" Sqlcnn.Open() Dim SqlDa As New SqlClient.SqlDataAdapter("select * from tbJX where 检修员领单时间 is NULL ", Sqlcnn) Dim dt As New DataSet SqlDa.Fill(dt, "tbJX") Dim Table As New DataTable Table = dt.Tables(0) DataGrid1.DataSource = Table DataGrid1.DataBind() End Sub Private Sub DataGrid1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGrid1.SelectedIndexChanged Dim bh As Integer = DataGrid1.SelectedItem.Cells(1).Text Dim SqlDa As New SqlClient.SqlDataAdapter("select * from tbJX where 工程编号=" & bh & "", Sqlcnn) Dim dt As New DataSet SqlDa.Fill(dt, "tbJX") Dim Table As New DataTable Table = dt.Tables(0) Label9.Text = Table.Rows(0).Item(1) Label2.Text = Table.Rows(0).Item(2) Label3.Text = Table.Rows(0).Item(3) Label4.Text = Table.Rows(0).Item(4) Label5.Text = Table.Rows(0).Item(6) Label6.Text = Table.Rows(0).Item(7) Label7.Text = Table.Rows(0).Item(5) Label8.Text = Table.Rows(0).Item(9) End Sub End Class
在初始化函数里加入绑定事件语句就行了
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);}
注意这个:打开属性生成器看看你的按钮列的CommandName是否“Select”,只有这个命令才能用触发SelectedIndexChanged事件,否则只能用ItemCommand事件里捕获;
也可以在ItemCommand事件里跟踪一下string tmp = e.CommandName看看
2、我已经做到你说的了,但是还是无效。
这个是VS.NET2003自动生成的,关键在于Handles DataGrid1.SelectedIndexChanged这段吧,只要你的DATAGRID和这段的名字一样应该就可以
Imports SystemImports System.Data.SqlClient
Public Class jxz
Inherits System.Web.UI.Page
Dim Sqlcnn As SqlConnection#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Label3 As System.Web.UI.WebControls.Label
Protected WithEvents Label4 As System.Web.UI.WebControls.Label
Protected WithEvents Label5 As System.Web.UI.WebControls.Label
Protected WithEvents Label6 As System.Web.UI.WebControls.Label
Protected WithEvents Label7 As System.Web.UI.WebControls.Label
Protected WithEvents Label8 As System.Web.UI.WebControls.Label
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
Protected WithEvents Label9 As System.Web.UI.WebControls.Label
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents DataGrid2 As System.Web.UI.WebControls.DataGrid '注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Sqlcnn = New SqlClient.SqlConnection
Sqlcnn.ConnectionString = "workstation id=WIN2003;packet size=4096;user id=sa;Pwd=123456789;data source=""192.168.0.2"";pers" & _
"ist security info=False;initial catalog=sfxtdb"
Sqlcnn.Open()
Dim SqlDa As New SqlClient.SqlDataAdapter("select * from tbJX where 检修员领单时间 is NULL ", Sqlcnn)
Dim dt As New DataSet
SqlDa.Fill(dt, "tbJX")
Dim Table As New DataTable
Table = dt.Tables(0)
DataGrid1.DataSource = Table
DataGrid1.DataBind()
End Sub Private Sub DataGrid1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGrid1.SelectedIndexChanged
Dim bh As Integer = DataGrid1.SelectedItem.Cells(1).Text
Dim SqlDa As New SqlClient.SqlDataAdapter("select * from tbJX where 工程编号=" & bh & "", Sqlcnn)
Dim dt As New DataSet
SqlDa.Fill(dt, "tbJX")
Dim Table As New DataTable
Table = dt.Tables(0)
Label9.Text = Table.Rows(0).Item(1)
Label2.Text = Table.Rows(0).Item(2)
Label3.Text = Table.Rows(0).Item(3)
Label4.Text = Table.Rows(0).Item(4)
Label5.Text = Table.Rows(0).Item(6)
Label6.Text = Table.Rows(0).Item(7)
Label7.Text = Table.Rows(0).Item(5)
Label8.Text = Table.Rows(0).Item(9)
End Sub
End Class
用其他的事件一样可以完成上面的功能的.例如ItemCommand就可以呀!
1。在Page_Load里面的绑定,要写在条件not ispostback里面,否则,你每一次都要重新查一次数据库,最好把你的datatable写进session中,
2.你的DataGrid1_PageIndexChanged事件里面没有重新绑定数据,DataGrid1_PageIndexChanged里面必须要重新绑定一次。
我给你写了个小例子,在你贴子http://community.csdn.net/Expert/topic/3556/3556739.xml?temp=1.119632E-02里面。
希望能帮助你解决这个问题。
2.你的DataGrid1_PageIndexChanged事件里面没有重新绑定数据,DataGrid1_PageIndexChanged里面必须要重新绑定一次。
我给你写了个小例子,在你贴子http://community.csdn.net/Expert/topic/3556/3556739.xml?temp=1.119632E-02里面。
希望能帮助你解决这个问题。
2、检查控件的ID和在程序代码的预定义
3、查看datagrid的viewstate又没有设置为true,如果是false的话,那么你永远得不到你的目的
If Not Page.IsPostBack Then
BindDataGrid()
End If
然后把每个控件要选择的方法重新选择一次,通俗的说就是重新把它用“.”给点出来
对了,Private Sub BindDataGrid()这个也不能少~~!
解决办法,看Vs生成的代码中有无Datagrid1.xxxx+=....
如果没有,自己加上。或者使用属性窗口把事件删除再重新加上。
第二种可能,使用了pushButton,这是DataGrid的一个bug,事件会不能触发,即使你在代码中绑定了事件。建议使用LinkButton。