Hejsan, jag håller på att försöka göra om min sida till C# från VB. Främst för att jag vill lära mig C# bättre.
Nu till problemet, jag har googlat, sökt i forumet + andra forum men hittar ingen stans där det står hur man använder e.Item.FindControl på det settet som jag använder det på i VB.
Sub dlGalleryMembers_ItemdataBound(ByVal obj As Object, ByVal e As DataListItemEventArgs)
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
CType(e.Item.FindControl("hlEnlargeGalleryImageMembers"), HyperLink).NavigateUrl = "member.aspx?id=" + CType(e.Item.DataItem, System.Data.DataRowView).Row("id").ToString()
CType(e.Item.FindControl("imgGalleryImageMembers"), Image).ImageUrl = "img/m_photos/" + CType(e.Item.DataItem, System.Data.DataRowView).Row("id").ToString() + "_thumbnail.jpg"
CType(e.Item.FindControl("imgGalleryImageMembers"), Image).Width = "50"
CType(e.Item.FindControl("imgGalleryImageMembers"), Image).Height = "50"
End If
End Sub
Jag vill fixa den koden till C#, jag försökte själv men det vart nog inte så bra, ger olika felmeddelanden hela tiden:
public void dlGalleryMembers_ItemdataBound(object obj, DataListItemEventArgs e)
{
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) {
(e.Item.FindControl("hlEnlargeGalleryImageMembers") as HyperLink).NavigateUrl = "member.aspx?id=" + (e.Item.DataItem as System.Data.DataRowView).Row["id"].ToString();
(e.Item.FindControl("imgGalleryImageMembers") as Image).ImageUrl = "img/m_photos/" + (e.Item.DataItem as System.Data.DataRowView).Row["id"].ToString() + "_thumbnail.jpg";
(e.Item.FindControl("imgGalleryImageMembers") as Image).Width = 50;
(e.Item.FindControl("imgGalleryImageMembers") as Image).Height = 50;
}
}
Det är säkert 100 fel i den koden eftersom att den inte fungerar. Men jag har försökt iaf. (;
Tack voigtann1 för den länken! Den kommer hjälpa mig mycket!
Testade med wallabous hjälp men fick felmeddelandet:
System.InvalidCastException: Unable to cast object of type 'System.Data.Common.DbDataRecord' to type 'System.Data.DataRowView'.
Line 50: ((HyperLink)e.Item.FindControl("hlEnlargeGalleryImageMembers")).NavigateUrl = String.Format("member.aspx?id={0}", ((DataRowView)e.Item.DataItem).Row["id"].ToString());
Sedan så testade jag att köra koden i på länken. Men då vart det felmeddelandet:
CS0118: 'System.Data.DataRowView.Row' is a 'property' but is used like a 'method'
Line 50: ((HyperLink)(e.Item.FindControl("hlEnlargeGalleryImageMembers"))).NavigateUrl = ("member.aspx?id=" + ((System.Data.DataRowView)(e.Item.DataItem)).Row("id").ToString());
Har noll koll vad dem menar med både felmeddelandena?
EDIT
Svarade visst för snabbt, såg att i koden som dem skrev så hade dem ("id") ändrade till ["id"] då försvann felet på den raden.
Men fick sedan fel på raden under:
CS0029: Cannot implicitly convert type 'string' to 'System.Web.UI.WebControls.Unit'
((Image)(e.Item.FindControl("imgGalleryImageMembers"))).Width = "50";
Det är samma felmeddelande som jag fick när jag försökte själv.
EDIT
Är verkligen för snabb. ;P
Tog bort paranteserna på 50 och då försvannf elmeddelandet. Men är på samma fel igen som jag fick på wallabous kod. Hjälp? (;
tack Sorting, men jag löste det problemet genom att ta bort paranteserna på 50. Problemet är nu det hära:
thevice skrev:
System.InvalidCastException: Unable to cast object of type 'System.Data.Common.DbDataRecord' to type 'System.Data.DataRowView'.
Line 50: ((HyperLink)e.Item.FindControl("hlEnlargeGalleryImageMembers")).NavigateUrl = String.Format("member.aspx?id={0}", ((DataRowView)e.Item.DataItem).Row["id"].ToString());
Kan felet bero på den andra koden som jag har? Koden som ladda med Page_Load.