【问题标题】:Dropdown list and gridview row-index/selectedvalue issue下拉列表和 gridview 行索引/选定值问题
【发布时间】:2009-06-01 16:04:00
【问题描述】:

我有一个带有下拉列表的网格视图,它是通过编程方式创建的。我希望
可以访问所选值和该行的 ID。我在 Gridview_RowDataBound 中创建了下拉列表,我可以使用单元格中的文本,但我的 addHandler 从未被触发。我在哪里给它添加处理程序。我相信我可以在 RowCreated 中为其分配 addhandler,但是如果按钮是在 rowdatabound 中创建的,我将如何设置添加处理程序?

Dim deptvalue As String
    Dim i As Integer = 0

    Dim ddlmgr As New DropDownList
    ddlmgr.AutoPostBack = True
    AddHandler ddlmgr.SelectedIndexChanged, AddressOf ddlmgr_SelectedIndexChanged
    ddlmgr.Items.Clear()
    ddlmgr.Items.Insert(0, "--Select a Manager--")
    ddlmgr.AppendDataBoundItems = True
    ddlmgr.DataTextField = "Name"
    ddlmgr.DataValueField = "number"
    ddlmgr.DataSource = SqlDataSource2
    ddlmgr.DataBind()

    deptvalue = e.Row.Cells(0).Text
    ddlmgr.Attributes.Add("onchange", "setDepart('" & deptvalue & "')")

    If e.Row.RowType <> DataControlRowType.Pager And e.Row.RowType <> DataControlRowType.Header And e.Row.RowType <> DataControlRowType.Footer Then
        e.Row.Cells(2).Controls.Add(ddlmgr)
    End If

    If e.Row.RowType <> DataControlRowType.Pager And e.Row.RowType <> DataControlRowType.Footer Then
        e.Row.Cells(0).Style.Add("display", "none")
    End If

它最适合 Rowdata 绑定,因为我的下拉列表项不重复,但我需要能够使用我创建的 addhandler。

【问题讨论】:

    标签: .net asp.net vb.net gridview drop-down-menu


    【解决方案1】:

    我没有动态创建下拉菜单,而是将控件添加到了gridview。通过这样做,我可以访问 Selected 值。然后我通过将 onchange 属性添加到将隐藏值设置为隐藏字段中的文本的下拉列表来设置隐藏值的值。以下在 Gridview_RowDatabound 中:

     For i As Integer = 0 To GridView1.Rows.Count - 1
    
            Dim ddl As DropDownList = GridView1.Rows(i).FindControl("ddlmgr")
            Dim deptvalue As String = GridView1.Rows(i).Cells(0).Text
    
            ddl.Attributes.Add("onchange", "setDepart('" & deptvalue & "')")
        Next
    

    【讨论】:

      【解决方案2】:

      不使用单元格文本,为什么不直接使用 rowDatabound 中的 e.item.DataItem 来获取实际值?

      【讨论】:

      • 文字工作得很好……不过我可以做到。但这不是我的问题。
      • 我认为您不能在 rowDatabound 中执行此操作的原因是文本尚不存在 - e.Row.Cells(0).Text 将为空,这将导致您的更改事件失败。如果您在 rowDatabound 中设置 dataItem 的值,它应该可以工作。
      • 我认为您正在向后看我的问题。在 rowDatabound 我可以访问数据项和文本。我可以在那里得到那个rowID,但是我不能触发addhandler,这样我就可以得到我的selectedvalue。我会改写这个问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      相关资源
      最近更新 更多