skymanMedlem sedan juli 20012 450 inlägg Nu kommer jag med mina sjuka problem igen. Denna gången förhoppningsvis lite lättare att beskriva.
Jag vill lägga ut många länkar.
this.AddTableRow("","Date","Departure","Arrival","FlightNr","Ticket");
for(int i=0;i<X.Count;i++)
{
this.HyperLink1[i].NavigateUrl="../Default.aspx?b=2&c="+i;
if((string)Request.QueryString["c"]==Convert.ToString(i))
{
this.HyperLink1[i].ImageUrl="../pics/choose.gif";
}
else
{
this.HyperLink1[i].ImageUrl="../pics/choose_bw.gif";
}
this.AddTableRow(this.HyperLink1[i],((Flight)X[i]).AvrDatum.ToString(),((Flight)X[i]).AvrStad.ToString(),((Flight)X[i]).AnkStad.ToString(),((Flight)X[i]).FlightNr.ToString(),((Flight)X[i]).TicketName.ToString());
}
Den det vill inte fungera...
Den klagar på this.HyperLink1*.Navi...* mfl.
Hur gör man för att kunna indexera länkarna?
NETworkMedlem sedan juni 20011 732 inlägg Jag tror inte att du kan använda en for-sats på det här sättet, en programmeringsmässig kullerbytta. :) HyperLink1 är kontrollens id skriver du på det här sättet så blir kontrollens id exakt HyperLink1, inte HyperLink11, HyperLink12 osv... du kan bara stoppa in *i ett index... exempelvis Item *som då körs som Item[1], Item[2] osv...
Rätta mig om jag har fel...****
skymanMedlem sedan juli 20012 450 inlägg Jo men jag försöker deklarera HyperLink som en array men det vill inte fungera.
protected System.Web.UI.WebControls.HyperLink[] HyperLink1;
Man man inte göra på detta sättet? Måste jag skapa en ny HyperLink för varje länk?
icaaqMedlem sedan okt. 20005 273 inlägg
Den det vill inte fungera...
Den klagar på this.HyperLink1*.Navi... mfl.
Hur gör man för att kunna indexera länkarna?*
exakt hur låter klagandet?
skymanMedlem sedan juli 20012 450 inlägg
icaaq skrev:
exakt hur låter klagandet?
Property or indexer 'string.this[int]' cannot be assigned to -- it is read only
När jag försöker deklara såhär:
protected System.Web.UI.WebControls.HyperLink[] HyperLink1;
Så får jag felmeddelden då jag debuggar:
The base class includes the field 'HyperLink1', but its type (System.Web.UI.WebControls.HyperLink[]) is not compatible with the type of control (System.Web.UI.WebControls.HyperLink).
Och det felet får jag på min usercontrol, inte c#-koden.
NETworkMedlem sedan juni 20011 732 inlägg Alltså, jag tror du ska tänka om lite här. :) Det är möjligt att du kan göra en hyperlinkarray, men det är ju inte precis det smidigaste sättet. Du blandar ihop kod och utseende way too much! Varför gör du inte en datagrid istället och skriver ut länkarna i den (eller hur du nu vill ha dem)? Där finns det ju hyperlinkcolumns färdiga att använda, lätt och enkelt.
ZyaxMedlem sedan mars 200262 inlägg Du måste tänka om från början. Det är klart att du KAN skapa allt i koden, men då lägger man inte till Webbkontrollerna (alltså radiobutton eller hyperlink) i en datatabell eller array i koden!
Lättast är att skapa tabellen med färdiga webbkontroller såsom Datagrid eller DataList eller Repeaters.
Annars kan du givetvis skapa DataGrids bara på kodsidan. Ex:
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("Kolumn1",Type.GetType("System.String"));
DataColumn dc2 = new DataColumn("Kolumn2",Type.GetType("System.Int32"));
DataColumn dc3 = new DataColumn("Kolumn3",Type.GetType("System.Boolean"));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
DataRow dr = dt.NewRow();
dr["Kolumn1"]="Kalle";
dr["Kolumn2"]=12;
dr["Kolumn3"]=false;
dt.Rows.Add(dr);
DataRow dr2 = dt.NewRow();
dr2["Kolumn1"]="Pelle";
dr2["Kolumn2"]=13;
dr2["Kolumn3"]=true;
dt.Rows.Add(dr2);
DataGrid dg = new DataGrid();
dg.DataSource=dt;
dg.DataBind();
Vips! Du har en htmltabell med tre kolumner och två rader. Men det är givetvis smidigare att göra DataGriden i ASp.Net och tabellerna bakom...
ZyaxMedlem sedan mars 200262 inlägg Glömde addera griden till sidan och skapa en kolumn för din hyperlink:
dg.DataSource=dt;
HyperLinkColumn hpl = new HyperLinkColumn();
hpl.DataNavigateUrlField="Kolumn1";
hpl.DataTextField="Kolumn2";
dg.Columns.Add(hpl);
dg.DataBind();
Page.Controls.Add(dg);