datagrid中使用dropdownlist编辑模版时遇到问题

前2天我做的财务管理系统中需要用到datagrid控件来显示用户信息,为了能够编辑用户信息,我参照微软的asp.net入门套件ASP.NET Time Tracker Starter Kit (VBVS)中在datagrid中使用编辑模版。 在问题没解决之前,点击datagrid中的编辑始终报下面错误:
’==================

‘===================
下面是datagrid的html文件:

None.gif < asp:datagrid id = " dguserdetail "  runat = " server "  CssClass = " datagrid "  Width = " 760 "  AlternatingItemStyle - BackColor = " #F9F9F9"
None.gif
AllowPaging = " true "  CellPadding = " 3 "  PageSize = " 15 "  AutoGenerateColumns = " false "  EnableViewState = " true "             OnUpdateCommand = " dguserdetail_UpdateCommand "  OnEditCommand = " dguserdetail_OnEdit "  OnCancelCommand = " dguserdetail_OnCancel " >
None.gif
< AlternatingItemStyle BackColor = " #F9F9F9 " ></ AlternatingItemStyle >
None.gif
< HeaderStyle Font - Bold = " True " ></ HeaderStyle >
None.gif
None.gif
< Columns >
None.gif
None.gif
< asp:TemplateColumn HeaderText = " 姓名 " >
None.gif
< HeaderStyle Width = " 100px " ></ HeaderStyle >
None.gif
< ItemTemplate >
None.gif
< asp:label ID = " username "  Text = ' &nbsp;<%# DataBinder.Eval(Container.DataItem, "username").ToString() %> ' Runat="server" />
None.gif
</ ItemTemplate >
None.gif
</ asp:TemplateColumn >
None.gif
None.gif
< asp:TemplateColumn HeaderText = " 密码 " >
None.gif
< ItemStyle Wrap = " False " ></ ItemStyle >
None.gif
< ItemTemplate >
None.gif
< asp:label ID = " password "  Text = ' &nbsp;<%# DataBinder.Eval(Container.DataItem, "password").ToString() %> ' Runat="server" />
None.gif
</ ItemTemplate >
None.gif
< EditItemTemplate >
None.gif
< asp:textbox runat = " server "  CssClass = " Standard-text "  ID = " txtpassword "  Text = ' <%#DataBinder.Eval(Container.DataItem, "password").ToString()%>' Width="100" MaxLength="255">
None.gif
</ asp:textbox >
None.gif
</ EditItemTemplate >
None.gif
</ asp:TemplateColumn >
None.gif
None.gif
< asp:TemplateColumn HeaderText = " 电子邮箱 " >
None.gif
< ItemTemplate >
None.gif
< asp:label ID = " email "  Text = ' &nbsp;<%# DataBinder.Eval(Container.DataItem, "email").ToString() %> ' Runat="server" />
None.gif
</ ItemTemplate >
None.gif
< EditItemTemplate >
None.gif
< asp:textbox Width = " 135px "  AutoPostBack = false  CssClass = " Standard-text "  Runat = " server "  ID = " txtemail "  Text = ' <%# DataBinder.Eval(Container.DataItem, "email").ToString() %> ' />
None.gif
< asp:regularexpressionvalidator id = " RegularExpressionValidator1 "  runat = " server "  ErrorMessage = " 电子邮件无效 "  ControlToValidate = " txtemail"
None.gif
ValidationExpression = " \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* " ></ asp:regularexpressionvalidator >
None.gif
</ EditItemTemplate >
None.gif
</ asp:TemplateColumn >
None.gif
None.gif
< asp:TemplateColumn HeaderText = " 权限 " >
None.gif
< ItemStyle Wrap = " False " ></ ItemStyle >
None.gif
< ItemTemplate >
None.gif
< asp:label ID = " authority "  Text = ' &nbsp;<%# DataBinder.Eval(Container, "DataItem.authority") %>' Runat="server" />
None.gif
</ ItemTemplate >
None.gif
< edititemtemplate >
None.gif
< asp:dropdownlist Width = " 100px "  ID = " DDauthority "  DataSource = ' <%# bindDropDownList %>'  Runat="server">
None.gif
</ asp:dropdownlist >
None.gif
</ edititemtemplate >
None.gif
</ asp:TemplateColumn >
None.gif
None.gif
< asp:EditCommandColumn ButtonType = " LinkButton "  UpdateText = " update "  HeaderText = " 編辑 "  CancelText = " cancel"
None.gif
EditText = " edit " >
None.gif
</ asp:EditCommandColumn >
None.gif
</ Columns >
None.gif
</ asp:datagrid >


最初的页面显示如下:


按下编辑后的页面:
 
对于编辑列中的edit,update,cancel需要用到下面的是件:

ExpandedBlockStart.gif ContractedBlock.gif   Protected   Sub dguserdetail_OnEdit() Sub dguserdetail_OnEdit(ByVal sender As [Object], ByVal e As DataGridCommandEventArgs) Handles dguserdetail.EditCommand
InBlock.gif
'==============================
InBlock.gif
dguserdetail.EditItemIndex = e.Item.ItemIndex //'获取被选中的行索引
InBlock.gif
   'Saves current info on temporary, use later in dguserdetail_Itembound()
InBlock.gif
studatagrid.username = CType(e.Item.FindControl("username"), Label).Text.Trim
InBlock.gifstudatagrid.password 
= CType(e.Item.FindControl("password"), Label).Text.Trim
InBlock.gifstudatagrid.email 
= CType(e.Item.FindControl("email"), Label).Text.Trim
InBlock.gifstudatagrid.authority 
= CType(e.Item.FindControl("authority"), Label).Text.Trim
InBlock.gif
'=======================================
InBlock.gif
        SetBind() //'最后问题解决的关键语句
InBlock.gif'
=======================================


None.gif ' =========================================  
None.gif
  '  During in-line-editing mode this selects corresponding items for dropdowns and text boxes.
None.gif'
==========================================
ExpandedBlockStart.gifContractedBlock.gif
  Private   Sub ItemDataBound() Sub ItemDataBound(ByVal sender As Object, _
InBlock.gif    
ByVal e As DataGridItemEventArgs) Handles dguserdetail.ItemDataBound
InBlock.gif        
If e.Item.ItemType = ListItemType.EditItem Then
InBlock.gif            
Dim currentCbo As DropDownList = CType(e.Item.FindControl("DDauthority"), DropDownList)
InBlock.gif            currentCbo.SelectedIndex 
= currentCbo.Items.IndexOf(currentCbo.Items.FindByText(studatagrid.authority))
InBlock.gif
InBlock.gif        
End If
InBlock.gif
ExpandedBlockEnd.gif    
End Sub
        

None.gif   ' 编写从 DropDownList 中检索当前选定值的代码,并执行数据库更新
ExpandedBlockStart.gifContractedBlock.gif
     Protected   Sub dguserdetail_UpdateCommand() Sub dguserdetail_UpdateCommand(ByVal source As ObjectByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dguserdetail.UpdateCommand
InBlock.gif 
Dim item As DataGridItem = dguserdetail.Items(dguserdetail.EditItemIndex)
InBlock.gif        
If e.CommandName = "Update" Then
InBlock.gif    
If e.Item.ItemType = ListItemType.EditItem Then '只有在编辑按下以后才能提交
InBlock.gif
                Dim username As String
InBlock.gif                
Dim password As String
InBlock.gif                
Dim email As String
InBlock.gif                
Dim authority As String
InBlock.gif                
Dim authorityId As Integer
InBlock.gifusername 
= CType(e.Item.FindControl("username"), Label).Text
InBlock.gifpassword 
= CType(e.Item.FindControl("txtpassword"), TextBox).Text
InBlock.gifemail 
= CType(e.Item.FindControl("txtemail"), TextBox).Text
InBlock.gifauthority 
= CType(e.Item.FindControl("ddauthority"), DropDownList).SelectedItem.Value
InBlock.gifauthorityId 
= IIf(authority = "系统管理员"10)
InBlock.gif
' Save the dguserdetail object.
InBlock.gif
            Try
InBlock.gif     SqlHelper.ExecuteNonQuery(strconn, 
"updateuser", username, password, email, authorityId)
InBlock.gif            
Catch
InBlock.gif            
End Try
InBlock.gif
End If
InBlock.gif
' Quit in-line-editing mode.
InBlock.gif
   dguserdetail.EditItemIndex = -1
InBlock.gif   SetBind()
InBlock.gif
End If
InBlock.gif
ExpandedBlockEnd.gif
End Sub


None.gif    ' 我们的取消事件是把当前所选行号设为-1. 这样就等于告诉datagrid, 不在是编辑模式了. 然后, 我们重新绑定数据.
None.gif

ExpandedBlockStart.gifContractedBlock.gif    
Protected   Sub dguserdetail_OnCancel() Sub dguserdetail_OnCancel(ByVal sender As [Object], ByVal e As DataGridCommandEventArgs) Handles dguserdetail.CancelCommand
InBlock.gif        dguserdetail.EditItemIndex 
= -1
InBlock.gif        SetBind()
ExpandedBlockEnd.gif    
End Sub
  ' TimeEntryGrid_OnCancel

转载于:https://www.cnblogs.com/lvxuehui/archive/2005/04/30/148263.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值