html代码:<%@ Page Language="vb" AutoEventWireup="false" Codebehind="test.aspx.vb" Inherits="SPEC.NET.test"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>test</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 24px" runat="server"
AutoGenerateColumns="False" ></asp:DataGrid></FONT>
</form>
</body>
</HTML>
后台vb代码:
Public Class test
Inherits System.Web.UI.Page
Public Conn As System.Data.SqlClient.SqlConnection#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub
Protected WithEvents DataGrid1 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
'在此处放置初始化页的用户代码
If Not IsPostBack Then
Binddata()
Else
'Binddata()
End If
End Sub
Private Sub Binddata()
Dim DGadp As System.Data.SqlClient.SqlDataAdapter
Dim Dset As Data.DataSet
Dim Sqlstr1 As String
Dim Col As System.Web.UI.WebControls.BoundColumn
Dim Editbutton As System.Web.UI.WebControls.EditCommandColumn
Dim i As Integer
Conn = New System.Data.SqlClient.SqlConnection(ConfigurationSettings.AppSettings("Connstring"))
Conn.Open()
DGadp = New System.Data.SqlClient.SqlDataAdapter("select * from SPEC_log", Conn)
Dset = New Data.DataSet
DGadp.Fill(Dset, "DG")
For i = 0 To Dset.Tables(0).Columns.Count - 1 ' 循环创建列
Col = New System.Web.UI.WebControls.BoundColumn
Col.HeaderText = Dset.Tables(0).Columns(i).ColumnName
Col.DataField = Dset.Tables(0).Columns(i).ColumnName
DataGrid1.Columns.Add(Col)
Next
'创建button
Editbutton = New System.Web.UI.WebControls.EditCommandColumn
Editbutton.HeaderText = "Edit"
Editbutton.EditText = "Edit"
Editbutton.CancelText = "Cancel"
Editbutton.UpdateText = "Update"
DataGrid1.Columns.Add(Editbutton)
'绑定数据
DataGrid1.DataSource = Dset.Tables(0)
DataGrid1.DataBind()
Conn.Close()
End Sub Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
DataGrid1.EditItemIndex = e.Item.ItemIndex
End Sub Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
DataGrid1.EditItemIndex = -1
End Sub
End Class=======================================================
要求实现效果,点击edit列,进入修改模式现在的问题:1.如果在Page_load中只在not ispostback中实行绑定的话,在点击edit时候,数据就丢失了。返回空白页面
2.如果在page_load中else后也绑定数据的话,为什么要点2次edit才出现编辑模式?而且cancel功能也不起作用(即点了没反应),而且编辑的行是错乱的。请高手帮忙看看,应该很多人都碰到过这类问题。不知道大家是怎么解决的?谢谢啦
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>test</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 24px" runat="server"
AutoGenerateColumns="False" ></asp:DataGrid></FONT>
</form>
</body>
</HTML>
后台vb代码:
Public Class test
Inherits System.Web.UI.Page
Public Conn As System.Data.SqlClient.SqlConnection#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub
Protected WithEvents DataGrid1 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
'在此处放置初始化页的用户代码
If Not IsPostBack Then
Binddata()
Else
'Binddata()
End If
End Sub
Private Sub Binddata()
Dim DGadp As System.Data.SqlClient.SqlDataAdapter
Dim Dset As Data.DataSet
Dim Sqlstr1 As String
Dim Col As System.Web.UI.WebControls.BoundColumn
Dim Editbutton As System.Web.UI.WebControls.EditCommandColumn
Dim i As Integer
Conn = New System.Data.SqlClient.SqlConnection(ConfigurationSettings.AppSettings("Connstring"))
Conn.Open()
DGadp = New System.Data.SqlClient.SqlDataAdapter("select * from SPEC_log", Conn)
Dset = New Data.DataSet
DGadp.Fill(Dset, "DG")
For i = 0 To Dset.Tables(0).Columns.Count - 1 ' 循环创建列
Col = New System.Web.UI.WebControls.BoundColumn
Col.HeaderText = Dset.Tables(0).Columns(i).ColumnName
Col.DataField = Dset.Tables(0).Columns(i).ColumnName
DataGrid1.Columns.Add(Col)
Next
'创建button
Editbutton = New System.Web.UI.WebControls.EditCommandColumn
Editbutton.HeaderText = "Edit"
Editbutton.EditText = "Edit"
Editbutton.CancelText = "Cancel"
Editbutton.UpdateText = "Update"
DataGrid1.Columns.Add(Editbutton)
'绑定数据
DataGrid1.DataSource = Dset.Tables(0)
DataGrid1.DataBind()
Conn.Close()
End Sub Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
DataGrid1.EditItemIndex = e.Item.ItemIndex
End Sub Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
DataGrid1.EditItemIndex = -1
End Sub
End Class=======================================================
要求实现效果,点击edit列,进入修改模式现在的问题:1.如果在Page_load中只在not ispostback中实行绑定的话,在点击edit时候,数据就丢失了。返回空白页面
2.如果在page_load中else后也绑定数据的话,为什么要点2次edit才出现编辑模式?而且cancel功能也不起作用(即点了没反应),而且编辑的行是错乱的。请高手帮忙看看,应该很多人都碰到过这类问题。不知道大家是怎么解决的?谢谢啦
DataGrid1.EditItemIndex = e.Item.ItemIndex
End Sub这里DataGrid1.EditItemIndex = e.Item.ItemIndex后要重新绑定数据Binddata()
所有的类似事件里面都要重新绑定数据的
Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
DataGrid1.EditItemIndex = e.Item.ItemIndex
Binddata()
End Sub Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
DataGrid1.EditItemIndex = -1
Binddata()
End Sub
把你后面加的binddata()改成DataGrid1.DataBind()就可以了,不然回重复出现一倍的列.不过谢谢你了