I icaaq Medlem sedan okt. 2000 5 273 inlägg Frågan 22 sep. 2002 05:29 #1 ok, efter att jag byggt upp en tabell med Response.Write ;) HÄR Så har jag gett mig på dynamiskt uppbyggda tabeller :)
Men hur gör man ifall man vill ha en <tr> med colspan="2" och sen resten av <tr> utan.
Man bör väl kunna använda en "template" men jag vet inte riktigt hur man gör.
Hoppas ni kan hjälpa mig in på rätt spår :)
H Han-Solo Medlem sedan jan. 2001 290 inlägg Har inte tillgång till mina filer just nu... men jag antar att du är ute efter nått liknande jag gjorde i veckan...
1. Använd dig av <asp:Table> i aspx sidan... ja du kan använda asp:TableRow och asp:TableCell oxå för att tjorvatill cellerna som du vill ha dem.
2. Nu kan du (ifall du minst har <asp:Table>) kommaåt tabellen från code behind sidorna...
new TableRow()
new TableCell()
osv...
på så vis kan man möblera till tabeller efter tycke och smak... DYNAMISKT!!!
/Var det svar nog?
I icaaq Medlem sedan okt. 2000 5 273 inlägg hmmm....
Jag tänkte mer att jag skulle använda header, item och Footer template.....
och sedan kanske fa sa att headertemplaten bara har en cell, sedan lista alla manadens dagar i itemtemplaten och sedan en snygg avslutning med footer.
ps mitt tangentbord fick spel sa jag kan inte skriva ordentligt ds
R renholm Medlem sedan apr. 2001 2 266 inlägg Du kan definera colspan i style="". Lägg bara till style="padding-left: 10px; padding-right: 10px; padding-top: 5px; padding-bottom: 5px".
I icaaq Medlem sedan okt. 2000 5 273 inlägg Jag vet inte om jag är ute och cyklar men när jag försöker att göra så här får jag inte upp några "padding" alternativ :l
[red]
Style s = new Style();
s.
[/red]
hur menar du att jag ska göra :q
I icaaq Medlem sedan okt. 2000 5 273 inlägg Jag fixade det.... :e
[red]int numrows;
int numcells = 2;
CultureInfo cultSwe = new CultureInfo("sv-SE");
DateTime dtedate = DateTime.Now;
numrows = DateTime.DaysInMonth(dtedate.Year, dtedate.Month);
DateTime dteDay = new DateTime(dtedate.Year, dtedate.Month, 1);
//Style s = new Style();
//s.
TableRow row1 = new TableRow();
TableCell cell1 = new TableCell();
cell1.Controls.Add(new LiteralControl(dteDay.Date.ToString("y", cultSwe)));
[b]cell1.ColumnSpan = 2;[/b]
row1.Cells.Add(cell1);
Table2.Rows.Add(row1);
for (int j=0; j<numrows; j++)
{
TableRow r = new TableRow();
TableCell c = new TableCell();
c.Controls.Add(new LiteralControl(dteDay.Date.ToString("dd", cultSwe)));
r.Cells.Add(c);
TableCell d = new TableCell();
d.Controls.Add(new LiteralControl(dteDay.Date.ToString("dddd", cultSwe)));
r.Cells.Add(d);
Table2.Rows.Add(r);
dteDay = dteDay.AddDays(1);
}
[/red]
Nu kan jag köra vidare lite till :)
I icaaq Medlem sedan okt. 2000 5 273 inlägg styles
Tjenare igen..... hehe
nu har jag denna:
[red]
Style sDatum = new Style();
[b]sDatum.Width = 10;[/b]
sDatum.Font.Name = "Verdana";
sDatum.Font.Size = 10;[/red]
men hur skriver jag in att jag vill ha 10% ?
I icaaq Medlem sedan okt. 2000 5 273 inlägg Jag fixade även det.
[red]
Style sDatum = new Style();
sDatum.Width = Unit.Percentage(10);
sDatum.Font.Name = "Verdana";
sDatum.Font.Size = 10;[/red]
:)
Pace Medlem sedan juni 2001 9 024 inlägg Du fixar det mesta icaaq. :e
I icaaq Medlem sedan okt. 2000 5 273 inlägg Tillbax :e
Jag har denna
[red]
TableRow row1 = new TableRow();
TableCell cell1 = new TableCell();
TableCell cell2 = new TableCell();
cell1.Controls.Add(new LiteralControl(dteDay.Date.ToString("y", cultSwe)));
cell1.ApplyStyle(sManad);
row1.Cells.Add(cell1);
cell2.Controls.Add(new ??? [b]Här vill jag köra doLinks(dtedate)[/b]
cell2.HorizontalAlign = HorizontalAlign.Right;
Table2.Rows.Add(row1);[/red]
Hur ska jag skriva för att kunna köra en funktion i dynamisk cell?
I icaaq Medlem sedan okt. 2000 5 273 inlägg Tjenare igen alla .Net:are!!
Nu har jag kommit så här långt
[red]
private void Page_Load(object sender, System.EventArgs e)
{
// Deklarerar lite variabler
int numrows;
string path = Request.FilePath;
CultureInfo cultSwe = new CultureInfo("sv-SE");
// Kollar lite datum
DateTime dtedate = DateTime.Now.Date;
if (Request.QueryString["dteDate"] != null)
{
dtedate = Convert.ToDateTime(Request.QueryString["dteDate"]);
}
numrows = DateTime.DaysInMonth(dtedate.Year, dtedate.Month);
DateTime dteDay = new DateTime(dtedate.Year, dtedate.Month, 1);
// Skapar en style för datumet
Style sDatum = new Style();
sDatum.Width = Unit.Percentage(10);
sDatum.Font.Name = "Verdana";
sDatum.Font.Size = FontUnit.XSmall;
sDatum.BorderWidth = Unit.Pixel(1);
sDatum.BorderColor = Color.Coral;
sDatum.BorderStyle = BorderStyle.Dotted;
// Skapar en style för år och månad
Style sArManad = new Style();
sArManad.Width = Unit.Percentage(10);
sArManad.Font.Name = "Verdana";
sArManad.Font.Size = FontUnit.XSmall;
sArManad.BorderWidth = Unit.Pixel(1);
sArManad.BorderColor = Color.Coral;
sArManad.BorderStyle = BorderStyle.Dotted;
// Skapar en style för Länkarna
Style sLank = new Style();
sLank.Width = Unit.Percentage(90);
sLank.Font.Name = "Verdana";
sLank.Font.Size = FontUnit.XSmall;
sLank.BorderWidth = Unit.Pixel(1);
sLank.BorderColor = Color.Coral;
sLank.BorderStyle = BorderStyle.Dotted;
// Skapar en style för veckodagarna
Style sVeckoDagar = new Style();
sVeckoDagar.Width = Unit.Percentage(90);
sVeckoDagar.Font.Name = "Verdana";
sVeckoDagar.Font.Size = FontUnit.XSmall;
sVeckoDagar.BorderWidth = Unit.Pixel(1);
sVeckoDagar.BorderColor = Color.Coral;
sVeckoDagar.BorderStyle = BorderStyle.Dotted;
// Skapar en style för månaden
Style sManad = new Style();
sManad.Font.Name = "Verdana";
sManad.Font.Size = FontUnit.XSmall;
sManad.BorderWidth = Unit.Pixel(1);
sManad.BorderColor = Color.Coral;
sManad.BorderStyle = BorderStyle.Dotted;
// Skapar en style för söndagar
Style sSondag = new Style();
sSondag.Font.Name = "Verdana";
sSondag.Font.Size = FontUnit.XSmall;
sSondag.BorderWidth = Unit.Pixel(1);
sSondag.BorderColor = Color.Coral;
sSondag.BorderStyle = BorderStyle.Dotted;
sSondag.BackColor= Color.PeachPuff;
/* Börjar bygga tabellen genom att visa månad och sedan länkarna till
angränsande månader*/
TableRow row1 = new TableRow();
TableCell cell1 = new TableCell();
cell1.Controls.Add(new LiteralControl(doLinks(dtedate, path)));
cell1.ColumnSpan = 2;
cell1.HorizontalAlign = HorizontalAlign.Center;
cell1.ApplyStyle(sLank);
row1.Cells.Add(cell1);
Table2.Rows.Add(row1);
// Lägger till dagarna i månaden
for (int j=0; j<numrows; j++)
{
TableRow r = new TableRow();
TableCell c = new TableCell();
c.Controls.Add(new LiteralControl(dteDay.Date.ToString("dd", cultSwe)));
if (dteDay.Date == DateTime.Now.Date)
{
c.Controls.Add(new LiteralControl("«"));
}
if (dteDay.DayOfWeek == 0)
{
c.ApplyStyle(sSondag);
}
else
{
c.ApplyStyle(sDatum);
}
r.Cells.Add(c);
TableCell d = new TableCell();
d.Controls.Add(new LiteralControl(dteDay.Date.ToString("dddd", cultSwe)));
if (dteDay.DayOfWeek == 0)
{
d.ApplyStyle(sSondag);
}
else
{
d.ApplyStyle(sVeckoDagar);
}
r.Cells.Add(d);
Table2.Rows.Add(r);
dteDay = dteDay.AddDays(1);
}
}
static string doLinks(DateTime dteDate, string Path)
// Denna funktion fixar till länkarna till angränsande månader
{
CultureInfo cultSwe = new CultureInfo("sv-SE");
return "<a href=\""+Path+"?dteDate="+dteDate.AddMonths(-1)+ "\" title=\""+dteDate.Date.AddMonths(-1).ToString("y", cultSwe)+ "\">«</a> "+ dteDate.Date.ToString("y", cultSwe)+" <a href=\""+Path+"?dteDate="+dteDate.AddMonths(1)+ "\" title=\""+dteDate.Date.AddMonths(1).ToString("y", cultSwe)+"\">»</a>";
}[/red]
Men jag har lite funderingar:
Hur gör jag om jag vill göra en tabell till i en dynaimskt uppbyggd cell?
Om ni tittar på koden ovanför vad kan jag göra för att optimera den?
Tycker ni att jag är jobbig ;) ?
NETwork Medlem sedan juni 2001 1 732 inlägg Rent spontant så skulle jag nog ha mina css-klasser i ett vanligt css-dokument istället om du inte uutyckligen behöver sätta dem dynamiskt. Dels blir det en massa kod, dels kan måste du kompilera sidan om du vill ändra i dem.
I din sista funktion dolinks säger jag samma sak som tidigare; undvik att returnera htmlkod, inte för prestandans skull men för översiktligheten och dynamiken. Rätt var det är så vill man komma åt den där länken (kanske inte händer i detta fallet men ändå) och då är det en bra vana att alltid använda asp.net-kontroller. Returnera en <asp:hyperlink> istället.
Jag vågar inte på rak arm svara på hur du gör en tabell i en dynamisk tabell från koden, någon annan kanske vet. Annars får vi hjälpas åt att lösa det senare om du inte fixar det själv. :)
I icaaq Medlem sedan okt. 2000 5 273 inlägg YEEAAA!!
Jag fick det att funka ..... :e
Det var bara att göra en annan tabell först och sedan sätta in den, så här
[red]
Table Table3 = new Table();
TableRow row2 = new TableRow();
TableCell cell3 = new TableCell();
cell3.Controls.Add(new LiteralControl(doLinks(dtedate, path)));
cell3.ColumnSpan = 2;
cell3.HorizontalAlign = HorizontalAlign.Center;
cell3.ApplyStyle(sLank);
row2.Cells.Add(cell3);
Table3.Rows.Add(row2);
TableRow row1 = new TableRow();
TableCell cell1 = new TableCell();
cell1.Controls.Add([b]Table3[/b]);
cell1.ColumnSpan = 2;
cell1.HorizontalAlign = HorizontalAlign.Center;
cell1.ApplyStyle(sLank);
row1.Cells.Add(cell1);
Table2.Rows.Add(row1);[/red]
Nu kan jag köra vidare........brooom
I icaaq Medlem sedan okt. 2000 5 273 inlägg Formtaggen :OO
Jag håller nu på med ett formulär men jag får inte in en listbox där jag vill ha den ........alltså mellan <form> </form> om jag visar lite kod kanske ni förstår bättre:
Här gör jag en listbox.
[red]
ListItem lSkala = new ListItem("0", "0");
ListBox lBox = new ListBox();
for (int i=0; i == 100; i++ )
{
lBox.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
lBox.Attributes.Add("runat", "server");[/red]
Och sedan gör jag en HtmlForm
[red]
HtmlForm lForm = new HtmlForm();
lForm.Enctype = "text/plain";
lForm.Method = "post";
lForm.Attributes.Add("runat", "server");
[/red]
Sen när jag ska stoppa in den i tabellen gör jag följande
[red]
TableRow row2 = new TableRow();
TableCell cell2 = new TableCell();
TableCell cell3 = new TableCell();
cell2.Controls.Add(new LiteralControl("Skala 0 till 100%"));
cell2.ApplyStyle(sLank);
cell2.HorizontalAlign = HorizontalAlign.Left;
row2.Cells.Add(cell2);
cell3.Controls.Add(lForm);
cell3.Controls.Add(lBox);
cell3.ApplyStyle(sLank);
cell3.HorizontalAlign = HorizontalAlign.Left;
row2.Cells.Add(cell3);
tInsert.Rows.Add(row1);
tInsert.Rows.Add(row2);[/red]
Hur ska jag göra föra att form taggen inte ska stängas på en gång :q
R renholm Medlem sedan apr. 2001 2 266 inlägg Eftersom du endast kan ha en server kontrollerad <form> så måste en och samma <form> omsluta hela sidan.
<body>
<form runat="server">
<!-- Sidan -->
</form>
</body>
I icaaq Medlem sedan okt. 2000 5 273 inlägg nja...jag löste det som så att jag la dit den i HtmlForm:en så här
[red]lForm.Controls.Add(lSkala);[/red]
Men jag kan på nått sätt inte infoga datan som jag har i listboxen till DropDownListen.....
Nån som har nån idé?
PS nu går jag och lägger mig.....
I icaaq Medlem sedan okt. 2000 5 273 inlägg Jag fixade även det :e
Jag hade glömt dataBindingen... :r