Avatar billede bongo20 Nybegynder
29. juli 2005 - 11:10 Der er 11 kommentarer og
1 løsning

C# table border

Hej

Hvis jeg gør følgende:

Table tbl;
TableRow row;
TableCell cell;

tbl = new Table();
tbl.Attributes.Add("border", "1");

cell = new TableCell();                   
cell.Text = "test";
row.Cells.Add(cell);               
tbl.Rows.Add(row);

pnlMain.Controls.Add(tbl);

Får jeg ingen border på min table.
Kilden til IE ser sådan ud i table linjen:

<table border="1" border="0">

Hvor kommer det border="0" fra, og hvordan slipper jeg for det?

:o)
Avatar billede nheilbuth Nybegynder
29. juli 2005 - 11:21 #1
Burde kunne gøres således:

tbl = new Table();
tbl.Attributes.Remove("border");
tbl.Attributes.Add("border", "1");
Avatar billede nielle Nybegynder
29. juli 2005 - 11:23 #2
tbl.BorderWidth = 1;
Avatar billede bongo20 Nybegynder
29. juli 2005 - 11:28 #3
ingen af delene virker. Border="0" bliver ved med at stå der
Avatar billede snepnet Nybegynder
29. juli 2005 - 15:32 #4
hehe - ja den ser ud til at være lidt småsvær at komme af med :o)
... måske det nemmeste er at du bare laver din egen Table-klasse :

public class NoBorderTable : Table
{
    protected override void AddAttributesToRender(HtmlTextWriter writer)
    {
    }
}

så skulle det være det.... det er AddAttributesToRender der sørger for at sætte border = "." ind.

du kan jo lige prøve det .... du går også glip af andre ting, hvis du ikke skriver noget i metoden overhovedet, så sig til hvis du får nogle problemer.

mvh
Avatar billede bongo20 Nybegynder
29. juli 2005 - 19:28 #5
njaaaaa snepnet,.. godtnok får jeg fjernet border="1",. men jeg kan ikke rigtig få den til at godtage andre attributter nu. Skal jeg selv definere en masse i den nye klasse?
Avatar billede bongo20 Nybegynder
29. juli 2005 - 19:28 #6
border="0" selvfølgelig :o)
Avatar billede snepnet Nybegynder
29. juli 2005 - 22:21 #7
jes - nu skal du få det :

det her er standardimplementeringen :

protected override void AddAttributesToRender(HtmlTextWriter writer)
{
      base.AddAttributesToRender(writer);
      string text1 = "0";
      if (base.ControlStyleCreated)
      {
            if (base.EnableLegacyRendering || (writer is Html32TextWriter))
            {
                  Color color1 = this.BorderColor;
                  if (!color1.IsEmpty)
                  {
                        writer.AddAttribute(HtmlTextWriterAttribute.Bordercolor, ColorTranslator.ToHtml(color1));
                  }
            }
            Unit unit1 = this.BorderWidth;
            if (this.GridLines != GridLines.None)
            {
                  if (unit1.IsEmpty || (unit1.Type != UnitType.Pixel))
                  {
                        text1 = "1";
                  }
                  else
                  {
                        int num1 = (int) unit1.Value;
                        text1 = num1.ToString(NumberFormatInfo.InvariantInfo);
                  }
            }
      }
      writer.AddAttribute(HtmlTextWriterAttribute.Border, text1);
}

det kan du bare copy/paste .... - og så mingelere lidt med border-attributten efterfølgende.

mvh
Avatar billede bongo20 Nybegynder
29. juli 2005 - 22:35 #8
jeg får denne:

CS0115: 'ASP.Default_aspx.AddAttributesToRender(System.Web.UI.HtmlTextWriter)': no suitable method found to override
Avatar billede bongo20 Nybegynder
29. juli 2005 - 22:39 #9
nej undskyld,.. denne:

CS0117: 'System.Web.UI.WebControls.Table' does not contain a definition for 'EnableLegacyRendering'

:o)
Avatar billede bongo20 Nybegynder
29. juli 2005 - 22:57 #10
fik det til at virke sådan her:

protected override void AddAttributesToRender(HtmlTextWriter writer)
{           
    string text1 = "0";
    if (base.Enabled || (writer is Html32TextWriter))
    {
        Color color1 = this.BorderColor;
        if (!color1.IsEmpty)
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Bordercolor, ColorTranslator.ToHtml(color1));
        }
    }
    Unit unit1 = this.BorderWidth;
    if (unit1.IsEmpty || (unit1.Type != UnitType.Pixel))
    {
        text1 = "1";
    }
    else
    {
        int num1 = (int)unit1.Value;
        text1 = num1.ToString(NumberFormatInfo.InvariantInfo);
    }
    writer.AddAttribute(HtmlTextWriterAttribute.Border, text1);           
}

tak for hjælpen,.. smider du et svar?
Avatar billede snepnet Nybegynder
30. juli 2005 - 00:11 #11
hej igen bongo :o)

undskyld ventetiden - godt du fik det fikset :o) - du må undskylde det med fejlene.... det er implementeringen i 2.0 jeg sendte dig .... det er jeg ked af :o(

i 1.1 ser det sådan her ud, så der er faktisk sket en del :

protected override void AddAttributesToRender(HtmlTextWriter writer)
{
      base.AddAttributesToRender(writer);
      Color color1 = this.BorderColor;
      if (!color1.IsEmpty)
      {
            writer.AddAttribute(HtmlTextWriterAttribute.Bordercolor, ColorTranslator.ToHtml(color1));
      }
      Unit unit1 = this.BorderWidth;
      if (this.GridLines == GridLines.None)
      {
            unit1 = Unit.Pixel(0);
      }
      else if (unit1.IsEmpty || (unit1.Type != UnitType.Pixel))
      {
            unit1 = Unit.Pixel(1);
      }
      int num1 = (int) unit1.Value;
      writer.AddAttribute(HtmlTextWriterAttribute.Border, num1.ToString(NumberFormatInfo.InvariantInfo));
}

havde jo nok været lidt nemmere at starte med den...

et svar fra de røde ører... håber ikke du brugte for lang tid på det.

mvh
Avatar billede snepnet Nybegynder
30. juli 2005 - 00:12 #12
i hvert fald et svar her :o)
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester