Glengamoi · AspHeute (Artikel) · .NET Heute (RSS-Suche) · .NET Blogs · Glengamoi Suche (Installieren via Klick)

Glengamoi

Die Diskussionsforen der deutschen .NET Community
Willkommen bei Glengamoi. Anmeldung | Registrieren | Hilfe
in Suchen

Gridview mit dynamisch erzeugten Templatefields erstellen

Letzter Beitrag 12-16-2006 13:45 von Chris Cluss. 8 Antworten.
Seite 1 von 1 (9 Treffer)
Beiträge sortieren: Zurück Weiter
  • 12-14-2006 21:13

    Gridview mit dynamisch erzeugten Templatefields erstellen

    Hallo,

    Ich habe ein Problem mit dem Gridview. Ich füge derzeit dynamisch Spalten hinzu (BoundFields) und setze selbige auf eine feste breite. Doch leider musste ich feststellen das wenn ich die Zeile editiere, die feste Breite nur sporadisch so bleibt wie sie ist (bei leeren Datenfeldern fällt es besonders auf). Leider hab ich keine Eigenschaft von den Boundfields gefunden die besagt das selbige im Edit modus ihre breite behalten, aber ich bin in der MSDN darauf gestossen das das ganze mit Templatefields zu lösen ist. Leider versteh ich das ganze nicht so ganz inwiefern man das mittels Code richtig umsetzt, da in den Beispielen ausschliesslich mit statischen Spalten gearbeitet wird.

    Ich nehme an das das ganze gar nicht so schwer ist, aber mir fehlt an der Stelle irgendwie der Ansatz, darum bitte ich euch um Rat :)

    Gruß Peter

    Abgelegt unter: ,
    • IP-Adresse ist Registriert
  • 12-14-2006 22:05 Antwort zu

    AW: Gridview mit dynamisch erzeugten Templatefields erstellen

    Erst ne blöde Frage aber bist Du Dir sicher, dass die Summe Deiner Spaltenbreiten nicht den verfügbaren Platz der Tabelle überschreitet?

    als z.B.  Tabelle 100 Spalten 120 ...  
    <table width=100>
       <tr>
    <td width=30>
    <td width=30>
    <td width=30>
    <td width=30>
     </tr>
    </table>

    Wie genau fügst Duz die Spalten hinzu?  Schick mal etwas Code.

    Gruß,

    • IP-Adresse ist Registriert
  • 12-15-2006 15:44 Antwort zu

    AW: Gridview mit dynamisch erzeugten Templatefields erstellen

    wenn ich ehrlich bin hab ich mir über die Tabellenbreite nie Gedanken gemacht. würde das denn etwas an dem Grid an sich ändern?

    Hier ist ein Codeausschnitt:

    'Code behind
    Dim unWidth As New Unit(50)
    ...
    For Each r As DataRow In ds.Tables(0).Rows
     Dim bfValue As New BoundField
     bfValue.DataField = r.Item(1)
     bfValue.HeaderText = r.Item(0)
        bfValue.SortExpression = r.Item(1)
        bfValue.ItemStyle.Width = unWidth
        bfValue.ItemStyle.Wrap = True
     grvValues.Columns.Add(bfValue)
    Next
    '... befüllen des Grids + Databinding etc.

    und das Gridview auf der ASPX-Seite
    <asp:GridView ID="grvValues" runat="server" ShowHeader="False" AllowPaging="True" CellPadding="4" ForeColor="#333333" GridLines="Both">
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" Font-Size="Small" />
        <EditRowStyle BackColor="#999999" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <EmptyDataRowStyle Width="50px" />
    </asp:GridView>

    Also die Breite das Steuerelementes könnte ich zwar berechnen aber ich dachte das wird sowieso auf die "minimale Breite" gesetzt. Womöglich mach ich es mal wieder viel zu kompliziert :). Ich hab auch den Source weggelassen der den Edit Button mit anbindet usw. aber ich hoffe es war das was du wolltest.

    Gruß Peter

    • IP-Adresse ist Registriert
  • 12-15-2006 16:47 Antwort zu

    AW: Gridview mit dynamisch erzeugten Templatefields erstellen

    Ich habe es jetzt mal gerade simuliert....

    Ich vermute Du hat unterschiedliche Schriften/Größe für Textbox und Datenfeld.

    Probiere einfach mal ein Style für das Inputfeld vor das Gridview zu setzen (gehört natürlich später ins Stylesheet aber für den Test gehts):

    <style>   input {font-size:10px;margin:0px ;font-family: Arial} </style>

    und im Gridview noch: <asp:GridView  Font-Names="Arial" Font-Size="10px" .....

     dann ist erst mal alles gleich und müßte gehen.

    • IP-Adresse ist Registriert
  • 12-15-2006 20:36 Antwort zu

    AW: Gridview mit dynamisch erzeugten Templatefields erstellen

    Ich danke erstmal für die schnellen Antworten. Hab das ganze auch gleich einmal ausprobiert, aber ich glaube wir reden möglicherweise aneinander vorbei ich hab vorsichtshalber mal ein bild von meinem Problem gemacht um selbiges zu verdeutlichen:

    Hier sieht man wahrscheinlich eher das übel. Ich will so gesehen das die breite der Zellen bleibt wie sie ist (wie es auch bei vielen Zellen der Fall ist, ausser bei der ersten und bei den leeren). Da ich ja mit Boundfields arbeite hab ich gedacht das das an selbigen liegt, weil ich kurioserweise nicht an die width Eigenschaft der im editiermodus befindlichen Felder herankomme.

    Vielleicht konnte ich jetzt mein Problem etwas besser verdeutlichen.

    Gruß Peter

    • IP-Adresse ist Registriert
  • 12-16-2006 8:16 Antwort zu

    AW: Gridview mit dynamisch erzeugten Templatefields erstellen

    die Textboxbreite richtet sich nach dem Datenttyp und das HTML schiebt die Spalte auseinander.

    An die Textbox kommst Du nur mit Templates ran...
    Aber Du kannst es über Styles lösen:

    bfValue.ItemStyle.CssClass = "myFixedWidth"

    <style>.myFixedWidth input{ width:44px;}</style>

     

    • IP-Adresse ist Registriert
  • 12-16-2006 8:21 Antwort zu

    AW: Gridview mit dynamisch erzeugten Templatefields erstellen

    Ist sowieso besser die Farben usw. im Stylesheet zu definieren...

    • IP-Adresse ist Registriert
  • 12-16-2006 11:17 Antwort zu

    AW: Gridview mit dynamisch erzeugten Templatefields erstellen

    super. das funktioniert einwandfrei :). Ich danke vielmals, so kann ich ersteinmal ohne TemplateFields weitermachen und den Stil grösstenteils in CSS auslagern. Falls du vielleicht noch eine Quelle bezüglich der TemplateFields im Codebehind wäre ich natürlich trotzdem noch interessiert, schliesslich ist es immer gut noch Alternativen aus dem Hut zu zaubern.
    • IP-Adresse ist Registriert
  • 12-16-2006 13:45 Antwort zu

    AW: Gridview mit dynamisch erzeugten Templatefields erstellen

    Ich hatte schon dannach gesucht.

    Beim Repeater funktioniert es auf jeden Fall wenn man in einem zweiten Repeater das Template anlegt und dann übermnimmt:

            Repeater2.HeaderTemplate = Repeater1.HeaderTemplate
            Repeater2.FooterTemplate = Repeater1.FooterTemplate
            Repeater2.ItemTemplate = Repeater1.ItemTemplate
            Repeater2.AlternatingItemTemplate = Repeater1.AlternatingItemTemplate

    Mir fehlt gerade die Zeit das fürs Datagrid zu evaluieren.

    Würde mich aber interessieren ob das geht.

    • IP-Adresse ist Registriert
Seite 1 von 1 (9 Treffer)