补充一下,droplistdown中的数据时根据datagrid中的数据从数据库中提取的!

解决方案 »

  1.   

    ItemDataBound中你的AppId变量在哪里定义的没有取到值
      

  2.   

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Put user code to initialize the page here
            If Not IsPostBack Then
                DataGrid_DataBind()
            End If
        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        'Dim stritemtype As String = e.Item.ItemType        Dim AppId As Integer = DataGrid1.DataKeys(e.Item.ItemIndex)        DataGrid_DataBind()           End Sub
        Sub DataGrid_DataBind()
            Dim d As New Data
            DataGrid1.DataSource = d.CreateDataSource()
            DataGrid1.DataBind()
        End Sub    Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
            If e.Item.ItemType = ListItemType.EditItem Then            Dim dropdownlistAppName As DropDownList = e.Item.FindControl("dropAppName")
                Response.Write("ok")            Dim dropdownlistAppNameText As String            Dim dropdownlistAppNameValue As String
                dropdownlistAppNameText = "Test1"            dropdownlistAppNameValue = "1"            dropdownlistAppName.Items.Add(New ListItem(dropdownlistAppNameText, dropdownlistAppNameValue))            'While rd.Read            '    dropdownlistAppNameText = rd("subApplication_Name")            '    dropdownlistAppNameValue = rd("subApplication_id")            '    dropdownlistAppName.Items.Add(New ListItem(dropdownlistAppNameText, dropdownlistAppNameValue))
                'End While
            End If
            DataGrid1.EditItemIndex = -1
            DataGrid_DataBind()
        End Sub
      

  3.   

    帮你做了一个例子你的问题在于 编辑 按钮  和更新 按钮的区分 并且 更新后要写
    DataGrid1.EditItemIndex = -1 否则还是处于更新状态并且重新绑定datagrid
      

  4.   

    谢谢你的答复,我的问题是在点击按钮“编辑”后,dropdownlist的数据没有得到绑定,而不是更新的问题!
      

  5.   

    Web中没有保存你全局变量的状态,你可以断点看看这个值是多少
      

  6.   

    你如何定义的? public static ?
      

  7.   

    wxkingsun(书生意气)  是啊 点编辑时 只是把一般状态改为 编辑状态 其他的什么也不要做dropdownlist的数据的绑定 应该放到更新时来做我给你写的就是这样做的 而且你可以看帮助 都是这样做的
      

  8.   

    你的dropdownlist的数据 之所以没更新 因为当你点编辑按钮时 先要刷新页面
    dropdownlist会重新生成 它的数据 当然也就没了
      

  9.   

    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑" >点击编辑按钮,按钮事件上浮到DataGrid1_EditCommand
    点击更新按钮,按钮事件上浮到DataGrid1_updateCommand
    点击取消按钮,按钮事件上浮到DataGrid1_CancelCommand
    点击一般的按钮,按钮事件上浮到DataGrid1_itemCommand
      

  10.   

    你把Page_Load里的绑定datagrid别放在if Not Page.IsPostBack这里。
    我是这么做的,我没用模板列
    在ItemDataBound事件下这样写的
                    Dim arr()
                    Dim inputproj As TextBox = CType(e.Item.Cells(2).Controls(0), TextBox)
                    inputproj.ID = "inputproj"
                    inputproj.Visible = False
                    ReDim arr(4)
                    arr(0) = ""
                    arr(1) = "设计"
                    arr(2) = "批注"
                    arr(3) = "确认结束"
                    arr(4) = "任务"
                    j = 0
                    Dim dropproj As New DropDownList()
                    For i = 0 To UBound(arr)
                        dropproj.Items.Add(arr(i))
                        If arr(i) = Trim(inputproj.Text) Then
                            j = i
                        End If
                    Next
                    dropproj.SelectedIndex = j
                    dropproj.ID = "dropproj"
                    e.Item.Cells(2).Controls.Add(dropproj)
      

  11.   

    你要实现的东西,用JS来配合做比较好。在你要改变控件的列,动态绑定每个td的id。在后台,定义一个公有变量,储存一个Xml 的string,第一次load的时候,就把所有dropdownlist中的项都按照一定格式放到这个Xml string中。前台的按钮就只要触发js的函数,传递参数为每一行绑顶的id值。在js函数中,根据ID找到Xml string中的那一项,找到某个dropdownlist所需要的项值,循环填充。然后再根据ID找到所要填充到的td,把dropdownlist写进去。不过这里最好用select不要用dropdownlist
      

  12.   

    谢谢大家!还有一个如何在点击按钮的同时将  <EditItemTemplate>中的dropdownlist的取值放到<ItemTemplate>中的label上呢?