2015-09-08 3 views
2

Я искал способ выбора целой строки в DataGrid, но я увидел только код GridView. Вот пример кода:Как сделать целую строку DataGrid (не GridView) clickable

Private Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated 
    If e.Row.RowType = DataControlRowType.DataRow Then 
    e.Row.Attributes("onmouseover") = "this.style.cursor='pointer';this.style.textDecoration='underline';" 
    e.Row.Attributes("onmouseout") = "this.style.textDecoration='none';" 
    e.Row.ToolTip = "Click to select row" 
    e.Row.Attributes("onclick") = Me.Page.ClientScript.GetPostBackClientHyperlink(Me.GridView1, "Select$" & e.Row.RowIndex) 
    End If 
End Sub 

так, чтобы он работал на моем DataGrid, у меня были некоторые изменения в своем коде, и сделал это так:

Private Sub DataGrid_ItemCreated(sender As Object, e As DataGridItemEventArgs) Handles DataGrid.ItemCreated 
    If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then 
     e.Item.Attributes("onmouseover") = "this.style.cursor='pointer';this.style.textDecoration='underline';" 
     e.Item.Attributes("onmouseout") = "this.style.textDecoration='none';" 
     e.Item.ToolTip = "Click to select row" 
     e.Item.Attributes("onclick") = Me.Page.ClientScript.GetPostBackClientHyperlink(Me.DataGrid, "Select$" & e.Item.ItemIndex) 
    End If 
End Sub 

Но мне кажется, что это не стрельба , (я думаю, что есть проблема на части onclick), но она выделяется. Я бы хотел сделать это: CommandName = Select на onclick в javascript, но как?

EDIT: Это в настоящее время мой новый код.

Private Sub DataGrid_ItemCreated(sender As Object, e As DataGridItemEventArgs) Handles DataGrid.ItemCreated 

    If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then 
     e.Item.Attributes("onmouseover") = "this.style.cursor='pointer';this.style.textDecoration='underline';" 
     e.Item.Attributes("onmouseout") = "this.style.textDecoration='none';" 
     e.Item.ToolTip = "Click to select row" 
     Dim button As LinkButton 
     button = DirectCast(e.Item.Cells(0).Controls(0), LinkButton) 
     Dim js As String = Page.ClientScript.GetPostBackClientHyperlink(button, "") 
     e.Item.Attributes("onclick") = js 
    End If 
End Sub 

Но единственное, что изменилось (по тому, что я наблюдал), это то, что он просто возвращает деньги.

+1

Почему бы вам не использовать 'GridView' в первое место? «DataGrid» очень старый и избыточный. Нет никакого преимущества перед «GridView». –

+0

@TimSchmelter, потому что у меня много кодов уже в этом DataGrid. Поэтому я должен использовать это полностью. Если я изменю свою сетку в GridView, у меня будет так много ревизий :( – Dale

+0

. Тогда взгляните на этот подход здесь: https://www.safaribooksonline.com/library/view/aspnet-cookbook/0596003781/ch01s17.html –

ответ

0

Убедитесь, что вы справляетесь DataGrid.ItemCommand события:

Private Sub DataGrid_ItemCommand(source As Object, e As DataGridCommandEventArgs) Handles DataGrid.ItemCommand 
    Me.DataGrid.SelectedIndex = e.Item.ItemIndex 
End Sub 

Использование DataGrid.ItemDataBound вместо DataGrid.ItemCreated:

Private Sub DataGrid_ItemDataBound(sender As Object, e As DataGridItemEventArgs) Handles DataGrid.ItemDataBound 
    If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then 
     e.Item.Attributes("onmouseover") = "this.style.cursor='pointer';this.style.textDecoration='underline';" 
     e.Item.Attributes("onmouseout") = "this.style.textDecoration='none';" 
     e.Item.ToolTip = "Click to select row" 
     'e.Item.Attributes("onclick") = Me.Page.ClientScript.GetPostBackClientHyperlink(Me.DataGrid, "Select$" & e.Item.ItemIndex) 

     Dim button As LinkButton 
     button = DirectCast(e.Item.Cells(0).Controls(0), LinkButton) 
     'Dim js As String = Page.ClientScript.GetPostBackClientHyperlink(Me.DataGrid, "Select$" & e.Item.ItemIndex) 
     Dim js As String = Page.ClientScript.GetPostBackClientHyperlink(button, "") 

     e.Item.Attributes("onclick") = js 
    End If 
End Sub 

Затем я добавил следующую разметку DataGrid, просто выделите выбор:

<SelectedItemStyle BackColor="Red" /> 
+0

Код, который вы указали только работает, если я нажимаю кнопку «Выбрать». Но мне нужно сделать, чтобы строка WHOLE была кликабельна, а не только кнопка выбора, потому что я тоже скрою ее. – Dale

+0

Хорошо, не понимал, что вам нужно целое чтобы кликать.Я отредактирую ответ – Pasilda

+0

Хорошо спасибо, я буду ждать вашего ответа @Pasilda – Dale

Смежные вопросы