Hitta en tabellrad från code behind
Hej,
Jag försöker hitta en rad i min tabell från code behind. Tabellen är <ASP:TABLE>
Jag ska markera den raden är tanken vid ett onclick event.
Jag vet vilket ID raden har och jag hittar den med följande kod:
Dim SelectedRow As TableRow = DirectCast(FindControl(productID), TableRow)
Men det känns som det borde finnas smartare sätt? Detta verkar ta prestanda. jag gör nämligen detta på flera olika saker(dvs försöker hitta olika rader o celler) och då får jag göra FindControl flera gånger.
Sidan går segare än alla andra.
Någon som har en smartare lösning?
/Jocke
Svara
Sv: Hitta en tabellrad från code behind
Istället för att lägga information i en tabell så kanske du skulle använda dig av en datagrid?
Svara
Sv:Hitta en tabellrad från code behind
Vet inte om det går snabbare men du kan loopa i en asp-table också om du vill. Type for each tr in asptable.rows.count. Men frågan är väl mer vad det är du gör. Om sidan går "trögt" som du säger kanske det är fel aproach redan där.
Svara
Sv: Hitta en tabellrad från code behind
Ja, jag kanske gör det svårare en det behöver vara.
Det gör vill göra är att lista produkter och lägga till "onmouseover" på raderna.
Sen skall produkten man klickat på vara markerad, dvs annan bakgrundsfärg.
Listan är linkbuttons(och det måste det vara).
Lite osäker på hur man fixar onmouseover och att senast klickad rad är markerad i en datagrid?
Några tips?
/Jocke
Svara
Sv:Hitta en tabellrad från code behind
Hej igen..
Nu har jag ändrat till en datagrid och fått till mina frågor ovan.
Skall visa det när jag löst detta sista:
Hur lägger man till en extra rad för varje rad i en datagrid?
Alltså, mellan varje produkt i griden, vill jag ha en rad där jag ska visa en bild. Ingen bild som har något att göra med datat, utan en vanlig bild(samma bil för varje rad).
Tackar på förhand!!
/Jocke
P.S. Det går otroligt mycket snabbare sedan jag bytte till en datagrid!
Svara
Sv: Hitta en tabellrad från code behind
Nu har jag löst detta.
Onmouseover i griden:
Private Sub dgProducts_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgProducts.ItemCreated e.Item.Attributes.Add("onMouseOver", "this.className='ProductNavigationListHover';") e.Item.Attributes.Add("onMouseOut", "this.className='';") End Sub
För att lägga till en extra rad för varje item i griden:
Private Sub dgProducts_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgProducts.ItemDataBound If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then Dim dgItem As DataGridItem Dim dgCell As TableCell dgItem = New DataGridItem(0, 0, ListItemType.Item) dgCell = New TableCell dgCell.ColumnSpan = 2 dgItem.Cells.Add(dgCell) dgCell.Text = "<img src=""Images/spacer_white.gif"" width=""157"" height=""1"">" dgProducts.Controls(0).Controls.Add(dgItem) End If 'Ladda in första produkten i griden If Not Page.IsPostBack Then If e.Item.DataSetIndex = 0 Then LoadProductData(e.Item.Cells(2).Text) 'Produkt id End If End If End Sub
/Jocke
Svara