前台的HTML如下:<%@ Page Language="vb" AutoEventWireup="True" Codebehind="ProjectView.aspx.vb" Inherits="Project.ProjectView"%>
<html>
<body>
<form runat="server" ID="Form1">
<h3>TemplateColumn Example</h3>
<asp:DataGrid id="ProjectGrid" runat="server" BorderColor="black" CellPadding="2" OnEditCommand="ProjectGrid_EditCommand"
OnCancelCommand="ProjectGrid_CancelCommand" OnUpdateCommand="ProjectGrid_UpdateCommand" ShowFooter="True"
AutoGenerateColumns="false">
<Columns>
<asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false" HeaderText="Edit Controls" />
<asp:BoundColumn HeaderText="名称" ReadOnly="true" DataField="name" />
<asp:TemplateColumn>
<HeaderTemplate>
<b>PM</b>
</HeaderTemplate>
<ItemTemplate>
<asp:Label Text='<%# DataBinder.Eval(Container.DataItem, "PM") %>'runat="server" ID="Label1"/>
</ItemTemplate>
<EditItemTemplate>
<asp:Textbox Text='<%# DataBinder.Eval(Container.DataItem, "PM") %>' runat="server" ID="txtbox" />
</EditItemTemplate>
<FooterTemplate>
<asp:HyperLink id="HyperLink1" Text="Microsoft" NavigateUrl="http://www.microsoft.com" runat="server" />
</FooterTemplate>
</asp:TemplateColumn>
<asp:BoundColumn HeaderText="SQA" DataField="sqa" />
</Columns>
</asp:DataGrid>
</form>
</body>
</html>处理更新命令函数如下:
Protected Sub ProjectGrid_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles ProjectGrid.UpdateCommand
Dim sqaTB As TextBox = e.Item.Cells(3).Controls(0)
Dim pmTB As TextBox = e.Item.Cells(2).Controls(1)
Response.Write(sqaTB.Text & pmTB.Text) Dim sqa As String = sqaTB.Text
Dim dr As DataRow
dr = ds.Tables(0).Rows.Find(ProjectGrid.DataKeys(e.Item.ItemIndex))
If Not dr Is Nothing Then
dr(2) = pmTB.Text
dr(3) = sqaTB.Text
Dim custCB As Odbc.OdbcCommandBuilder = New Odbc.OdbcCommandBuilder(da)
da.Update(ds, "projectInfo")
End If ProjectGrid.EditItemIndex = -1
ProjectGrid.DataSource = ds.Tables(0).DefaultView
ProjectGrid.DataBind()
End Sub在点编辑按钮后页面正确显示,修改可编辑行的值后点update按钮,得到的结果为什么仍然是原来的值,而不是新输入的值呢?
例如:
未编辑前页面显示1和2,点编辑按钮后,我将编辑框中的1和2分别改成3和4,然后点更新应该可以得到3和4,但是实际我用上面的代码仍然得到的是1和2(上面的response.write 输出的值仍然是12)请大家指点迷冿
<html>
<body>
<form runat="server" ID="Form1">
<h3>TemplateColumn Example</h3>
<asp:DataGrid id="ProjectGrid" runat="server" BorderColor="black" CellPadding="2" OnEditCommand="ProjectGrid_EditCommand"
OnCancelCommand="ProjectGrid_CancelCommand" OnUpdateCommand="ProjectGrid_UpdateCommand" ShowFooter="True"
AutoGenerateColumns="false">
<Columns>
<asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false" HeaderText="Edit Controls" />
<asp:BoundColumn HeaderText="名称" ReadOnly="true" DataField="name" />
<asp:TemplateColumn>
<HeaderTemplate>
<b>PM</b>
</HeaderTemplate>
<ItemTemplate>
<asp:Label Text='<%# DataBinder.Eval(Container.DataItem, "PM") %>'runat="server" ID="Label1"/>
</ItemTemplate>
<EditItemTemplate>
<asp:Textbox Text='<%# DataBinder.Eval(Container.DataItem, "PM") %>' runat="server" ID="txtbox" />
</EditItemTemplate>
<FooterTemplate>
<asp:HyperLink id="HyperLink1" Text="Microsoft" NavigateUrl="http://www.microsoft.com" runat="server" />
</FooterTemplate>
</asp:TemplateColumn>
<asp:BoundColumn HeaderText="SQA" DataField="sqa" />
</Columns>
</asp:DataGrid>
</form>
</body>
</html>处理更新命令函数如下:
Protected Sub ProjectGrid_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles ProjectGrid.UpdateCommand
Dim sqaTB As TextBox = e.Item.Cells(3).Controls(0)
Dim pmTB As TextBox = e.Item.Cells(2).Controls(1)
Response.Write(sqaTB.Text & pmTB.Text) Dim sqa As String = sqaTB.Text
Dim dr As DataRow
dr = ds.Tables(0).Rows.Find(ProjectGrid.DataKeys(e.Item.ItemIndex))
If Not dr Is Nothing Then
dr(2) = pmTB.Text
dr(3) = sqaTB.Text
Dim custCB As Odbc.OdbcCommandBuilder = New Odbc.OdbcCommandBuilder(da)
da.Update(ds, "projectInfo")
End If ProjectGrid.EditItemIndex = -1
ProjectGrid.DataSource = ds.Tables(0).DefaultView
ProjectGrid.DataBind()
End Sub在点编辑按钮后页面正确显示,修改可编辑行的值后点update按钮,得到的结果为什么仍然是原来的值,而不是新输入的值呢?
例如:
未编辑前页面显示1和2,点编辑按钮后,我将编辑框中的1和2分别改成3和4,然后点更新应该可以得到3和4,但是实际我用上面的代码仍然得到的是1和2(上面的response.write 输出的值仍然是12)请大家指点迷冿
解决方案 »
- 关于Url传递的参数据有%号的问题,急!!!!!
- 100分求大牛解决难题?难题?
- 点击gridview行,就将该行的值获取到下面对应的TextBox
- 嵌套在gridview中checkbox怎样让用户只能单选,就像radiobutton一样,一次只能选择一个!!!急!在线等!
- 大家帮帮忙
- 怪了,找不到Response.Write了
- asp.net国际化资源变量如何连接字符串
- 主题:遇到了一个难题,百思不得其解 ORA-01453错误
- 如何在动态生成的radiobutton页面中设置提交按钮
- asp.net中类怎么封装?高手的进
- 请教存储过程的问题?
- Menu问题~即想触发MenuItemClick,又想链接到别的页面怎么处理??
if(!ispostback){
datagrid.databind()
}
end sub
//估计你是
每次多没判断 ispostback