DataGrid 中UpdateCommand 不更新应注意..

DataGrid 中UpdateCommand 不更新应注意..

代码:

Protected Sub DataGrid_MenuList_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid_MenuList.UpdateCommand

Dim LevelID As DropDownList = CType(e.Item.Cells(0).Controls(1), DropDownList)

Dim Status As DropDownList = CType(e.Item.Cells(4).Controls(1), DropDownList)

Dim id = Convert.ToInt32(DataGrid_MenuList.DataKeys(e.Item.ItemIndex).ToString)

Dim Menu_ID As String = CType(e.Item.Cells(1).Controls(0), TextBox).Text

Dim Menu_Name As String = CType(e.Item.Cells(2).Controls(0), TextBox).Text

Dim Url As String = CType(e.Item.Cells(3).Controls(0), TextBox).Text

Dim sql As New System.Text.StringBuilder

sql.Append("UPDATE TB_Menu SET Index_ID='" & LevelID.SelectedValue & "', Menu_Name='" & Menu_Name & "', Url='" & Url & "', Status='" & Status.SelectedValue & "', Last_Modified_User='Lilo', Last_Modified_Date='" & Now.ToString("yyyy-MM-dd") & "' ")

sql.Append("WHERE Menu_ID ='" & Menu_ID & "'")

Live.Ado.ADOProxy.UpdateRowByQuery(sql.ToString)

DataGrid_MenuList.EditItemIndex = -1

BindMenu()

End Sub

单纯的看这段代码里没有凭问题的,

取绑定值的方法也完全正确,如果DataGrid 中没有绑定其它控件,则为CType(e.Item.Cells(1).Controls(0), TextBox).Text , 注:Cell(1) 当前行的第2 个单元格,起始是从第0记数的, Controls(0) 代表是没有取绑定控件

CType(e.Item.Cells(0).Controls(1), DropDownList)

表示取当前编辑行 的绑定控件,绑定的控件为DropDownList

问题:Update 到数据库,并无任何变化

单步调试,可以看到程序没有取到最新输入的值

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1027" style="WIDTH: 414.75pt; HEIGHT: 104.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5Cwei_zhu%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png" o:title=""></imagedata></shape>

<shape id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 79.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5Cwei_zhu%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.png" o:title=""></imagedata></shape>

当然到更新到数据库也不会有何变化

问题解决:

这里你应该检查page_load里没有对ispostback做判断处理

将绑定数据放入 Not ispostBack 内:

If Not IsPostBack Then

BindMenu()

End If

这个跟Asp.net 的页面调用顺序相关的,如果没有调Ispostback ,导致datagrid重新绑定,覆盖了修改的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值