så blir Url:en som man kommer till om man klickar:
localhost/index.aspx?id=<%# + DataBinder.Eval(Container, "DataItem.UserId") %>
Dock om jag har följande kod:
NavigateUrl='<%# "/index.aspx?id=" + DataBinder.Eval(Container, "DataItem.UserId") %>'
och
DataGrid1.Items[2].Cells[3].BackColor = Color.Blue;
På första frågan så måste du se till att du befinner dig i din headertemplate. Jag brukar använda ItemDataBound-eventet för att komma åt saker i mina datagrids. Lägg en koll där så du bara kör koden i headern. Nåt i den här stilen skulle jag tro:
public void myFunction(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
//Om vi är i headern:
if (e.Item.ItemType == ListItemType.Header) {
// ...så kör du en findcontrol:
((LinkButton)e.Item.FindControl("myLB")).Text = "lajban";
}
}
public void myFunction(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
//Om vi är i headern:
if (e.Item.ItemType == ListItemType.Header) {
// ...så kör du en findcontrol:
((LinkButton)e.Item.FindControl("myLB")).Text = "lajban";
}
}
Fattar inte så mycket av koden ova. Hur göra man om man vill ha in den i PageLoaden och inte ha den som en egen funktion?
Varför ska du ha den i pageloaden? En bra regel är att ha så lite kod som möjligt där.
Använder du vs.net? Gå i så fall till dina events för din datagrid, där har du något som heter DataGridItemEvent. Det är denna du ska använda... det är helt enkelt ett event som körs för varje rad när din datagrid byggs upp, något du kan utnyttja om du ska göra förändringar i den från koden...
Har du inte vs.net skriver du bara onItemDataBound="myFunction" i din datagrid.
Vill du ändå göra detta i pageloaden måste du hitta kontrollen i din header. Din headertemplate är en kontroll (inte ett item) precis som din linkbutton, tror jag. Eftersom headern då är den första kontrollen i din datagrid så borde du hitta den här:
myDG.Controls[0]
Denna innehåller sedan i sin tur ett antal kontroller, då får du antingen göra en findcontrol eller leta upp den manuellt. Om din linkbutton är den första kontrollen så borde du hitta den så här:
Men det är ju inte alls säkert att det är din första kontroll så du får prova lite... skriv ut och se vad du hittar eller gör en trace. Men enklast är nog en findcontrol som sagt.
Obs! Av någon anledning så vill inte länken ovan fungera när jhag lägger in den här på webbforum, men om du tar boprt % 20 och < br% 20/> i url:en så kommer du rätt...