none
ToolTip for gridview get cell value asp net C# RRS feed

  • Frage

  • Hallo,

    bitte um Hilfe, keine Ahnung was hier falsch ist, aber es wird immer der Text vom Header im ToolTip gezeigt, brauche die Werte aus den Cellen...

    Mein Code:

    protected void gv_RowCreated(object sender, GridViewRowEventArgs e) {

    for (int i = 0; i < e.Row.Cells.Count; i++) { e.Row.Cells[i].ToolTip = e.Row.Cells[i].Text; } }

    Danke

    Gruß Danijel


    Dienstag, 7. Juni 2016 12:43

Antworten

  • Hallo Danijel,

    nuja, die Text Eigenschaft der Zelle selbst ist in dem Fall auch leer, da der Inhalt in deinen Label Controls steht.

    Du müsstest also das Label suchen in der Zelle suchen und dessen Text Eigenschaft auslesen. Aber warum machst Du es dir eigentlich so schwer?

    Zum einen hast Du im RowDataBound Ereignis über e.Row.DataItem Zugriff auf das Element, dass die Daten für die Zeile beinhaltet. D.h. Du kannst auch gleich diesen Wert auslesen und setzen.

    if( e.Row.RowType == DataControlRowType.DataRow )
    {
        <Datentyp> dataItem = (<Datentyp>)e.Row.DataItem;
    
        ...;
    }
    

    Noch einfacher wäre es aber natürlich, wenn Du die Tooltip Eigenschaft einfach direkt in der Deklaration setzt.

    <ItemTemplate>
        <asp:Label ID="myLabelARGE" runat="server" Text='<%#Eval("ARGE") %>' ToolTip='<%#Eval("ARGE") %>' Width="45px"></asp:Label>
    </ItemTemplate>


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 8. Juni 2016 07:07
    Moderator

Alle Antworten

  • Hallo Danijel,

    ändere "RowCreated" mal in "RowDataBound".


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 7. Juni 2016 14:11
    Moderator
  • Hi Stefan,

    habe es geändert...

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
    
                for (int i = 0; i < e.Row.Cells.Count; i++)
                {
                    e.Row.Cells[i].ToolTip = e.Row.Cells[i].Text;
                }
                
            }

    ...passiert wieder nichts...

    Ich meine, es passiert doch was, er zeigt mir den Header namen... 

    Gruß Danijel



    Dienstag, 7. Juni 2016 19:02
  • Hallo Danijel,

    zeig mal bitte die Deklaration deines GridViews, also den Teil:

    <asp:GridView ...>
        ...
    </asp:GridView>

    Ich hab das hier probiert und die zweite Variante mit RowDataBound funktioniert einwandfrei (natürlich muss diese Methode auch im RowDataBound Ereignis aufgerufen werden).

    Führe ich das im RowCreated Ereignis aus, sind die Inhalt leer, da die Zellenwerte zu diesem Zeitpunkt noch nicht geschrieben wurden. Daher die Verlagerung ins RowDataBound Ereignis.

    Da Du aber schreibst, dass der Headername angezeigt werden würde, nehme ich allerdings an, dass Du nach dem setzen der Tooltips in RowDataBound noch irgendwo anders weiteren Code hast, der die Tooltips auf die Headerzellenwerte setzt. Denn von alleine macht das GridView Control das nicht.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Mittwoch, 8. Juni 2016 06:20
    Moderator
  • Hi Stefan,

    <asp:GridView ID="GridView1"
            runat="server"
            AutoGenerateColumns="False"
            Width="1600px"
            AllowPaging="True"
            CellPadding="4"
            OnRowEditing="GridView1_RowEditing"
            DataKeyNames="AngebotslisteBauID"
            OnPageIndexChanging="GridView1_PageIndexChanging"
            OnRowCancelingEdit="GridView1_RowCancelingEdit"
            OnRowDeleting="GridView1_RowDeleting"
            OnRowUpdating="GridView1_RowUpdating"
            AllowSorting="True"
            EnableModelValidation="True"
            CssClass="grid-view"
            OnRowCreated="gvHover_RowCreated"
            OnRowDataBound="GridView1_RowDataBound">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton ID="btnDelete" runat="server" class="glyphicon glyphicon-trash" CommandArgument='<%# Eval("AngebotslisteBauID") %>' OnCommand="OnDeleteGridRow" OnClientClick="if (!confirm('Datensatz löschen?')) return false;">
                        </asp:LinkButton>
    
                    </ItemTemplate>
                </asp:TemplateField>
    
                <asp:CommandField ShowEditButton="True" ControlStyle-CssClass="glyphicon glyphicon-pencil" EditText="" />
    
                <asp:TemplateField HeaderText="Eintragungsdatum" Visible="true">
                    <ItemTemplate>
                        <asp:Label ID="myLabelEintragungsdatum" runat="server" Text='<%#Eval("Eintragungsdatum", "{0:dd.MM.yyyy hh:mm:ss}") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="AngebotslisteBauID" Visible="False">
                    <ItemTemplate>
                        <asp:Label ID="AngebotslisteBauID" runat="server" Text='<%# Eval("AngebotslisteBauID") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Abgabe">
                    <ItemTemplate>
                        <asp:Label ID="myLabelAbgabe" runat="server" Text='<%#Eval("Abgabe", "{0:dd.MM.yyyy}") %>'></asp:Label>
                    </ItemTemplate>
    
                    <EditItemTemplate>
                        <asp:TextBox ID="Abgabe" runat="server" Text='<%# Eval("Abgabe", "{0:dd.MM.yyyy}") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Uhrzeit">
                    <ItemTemplate>
                        <%#Eval("Uhrzeit") %>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="Uhrzeit" runat="server" Text='<%# Eval("Uhrzeit") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Bauvorhaben">
                    <ItemTemplate>
    
                        <asp:Label ID="myLabelBauvorhaben" CssClass="myGridView" runat="server" Text='<%#Eval("Bauvorhaben") %>' Width="150px"></asp:Label>
    
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="Bauvorhaben" runat="server" Text='<%# Bind("Bauvorhaben") %>'> </asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Bereich">
                    <ItemTemplate>
                        <asp:Label ID="myLabelBereich" runat="server" CssClass="myGridView" Text='<%#Eval("Bereich") %>' Width="100px"></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="Bereich" runat="server" Text='<%# Eval("Bereich") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Gewerk">
                    <ItemTemplate>
                        <asp:Label ID="myLabelGewerk" runat="server" Text='<%#Eval("Gewerk") %>' Width="100px"></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="Gewerk" runat="server" Text='<%# Eval("Gewerk") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Bauherr">
                    <ItemTemplate>
                        <asp:Label ID="myLabelBauherr" runat="server" Text='<%#Eval("Bauherr") %>' Width="100px"></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="Bauherr" runat="server" Text='<%# Eval("Bauherr") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Ausschreiber">
                    <ItemTemplate>
                        <asp:Label ID="myLabelAusschreiber" runat="server" Text='<%#Eval("Ausschreiber") %>' Width="100px"></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="Ausschreiber" runat="server" Text='<%# Eval("Ausschreiber") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
    
    
                <asp:TemplateField HeaderText="Bereichsleiter">
                    <ItemTemplate>
                        <asp:Label ID="myLabelBereichsleiter" runat="server" Text='<%#Eval("Bereichsleiter") %>' Width="100px"></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="Bereichsleiter" runat="server" Text='<%# Eval("Bereichsleiter") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Angebotsver.">
                    <ItemTemplate>
                        <asp:Label ID="myLabelAngebotsverantwortliche" runat="server" Text='<%#Eval("Angebotsverantwortliche") %>' Width="100px"></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="Angebotsverantwortliche" runat="server" Text='<%# Eval("Angebotsverantwortliche") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Kalkulant">
                    <ItemTemplate>
                        <asp:Label ID="myLabelKalkulant" runat="server" Text='<%#Eval("Kalkulant") %>' Width="100px"></asp:Label>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="Kalkulant" runat="server" Text='<%# Eval("Kalkulant") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Öffentl.">
                    <EditItemTemplate>
                        <asp:DropDownList ID="Oeffentlich" runat="server" SelectedValue='<%#Bind("Oeffentlich") %>'>
                            <asp:ListItem></asp:ListItem>
                            <asp:ListItem>JA</asp:ListItem>
                            <asp:ListItem>NEIN</asp:ListItem>
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="myLabelOeffentlich" runat="server" Text='<%#Eval("Oeffentlich") %>' Width="50px"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Status">
                    <EditItemTemplate>
                        <asp:DropDownList ID="Status" runat="server" SelectedValue='<%#Bind("Status") %>'>
                            <asp:ListItem></asp:ListItem>
                            <asp:ListItem>Erfasst</asp:ListItem>
                            <asp:ListItem>Kalk-Phase</asp:ListItem>
                            <asp:ListItem>Abgegeben</asp:ListItem>
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="myLabelStatus" runat="server" Text='<%#Eval("Status") %>' Width="75px"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="ARGE">
                    <EditItemTemplate>
                        <asp:DropDownList ID="ARGE" runat="server" SelectedValue='<%# Bind("ARGE") %>'>
                            <asp:ListItem></asp:ListItem>
                            <asp:ListItem>JA</asp:ListItem>
                            <asp:ListItem>NEIN</asp:ListItem>
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="myLabelARGE" runat="server" Text='<%#Eval("ARGE") %>' Width="45px"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="AngSumme">
                    <EditItemTemplate>
                        <asp:DropDownList ID="Summe" runat="server" SelectedValue='<%# Bind("Summe") %>'>
                            <asp:ListItem></asp:ListItem>
                            <asp:ListItem>>€1000</asp:ListItem>
                            <asp:ListItem>>€5000</asp:ListItem>
                            <asp:ListItem>>€10000</asp:ListItem>
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="myLabelSumme" runat="server" Text='<%#Eval("Summe") %>' Width="47px"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
    
                <asp:TemplateField HeaderText="Username">
                    <ItemTemplate>
                        <%#Eval("Username") %>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="Username" runat="server" Text='<%# Eval("Username") %>'></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
    
    
            </Columns>
    
            <%-- <FooterStyle BackColor="#337ab7" ForeColor="#337ab7" />
            <HeaderStyle BackColor="#337ab7" Font-Bold="True" ForeColor="White" />--%>
    
            <%--<PagerStyle BackColor="#337ab7" ForeColor="White" HorizontalAlign="Left" />--%>
            <%--<RowStyle BackColor="White" ForeColor="#003399" />--%>
            <%-- <SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />--%>
        </asp:GridView>

    Danke

    Mittwoch, 8. Juni 2016 06:29
  • Hallo Danijel,

    nuja, die Text Eigenschaft der Zelle selbst ist in dem Fall auch leer, da der Inhalt in deinen Label Controls steht.

    Du müsstest also das Label suchen in der Zelle suchen und dessen Text Eigenschaft auslesen. Aber warum machst Du es dir eigentlich so schwer?

    Zum einen hast Du im RowDataBound Ereignis über e.Row.DataItem Zugriff auf das Element, dass die Daten für die Zeile beinhaltet. D.h. Du kannst auch gleich diesen Wert auslesen und setzen.

    if( e.Row.RowType == DataControlRowType.DataRow )
    {
        <Datentyp> dataItem = (<Datentyp>)e.Row.DataItem;
    
        ...;
    }
    

    Noch einfacher wäre es aber natürlich, wenn Du die Tooltip Eigenschaft einfach direkt in der Deklaration setzt.

    <ItemTemplate>
        <asp:Label ID="myLabelARGE" runat="server" Text='<%#Eval("ARGE") %>' ToolTip='<%#Eval("ARGE") %>' Width="45px"></asp:Label>
    </ItemTemplate>


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 8. Juni 2016 07:07
    Moderator
  • Hi Stefan,

    warum ich das so schwer mache - hab noch nicht den ganzen Überblick über asp.net :(...und welche Möglichkeiten es gibt... kämpfe noch damit... aber es geht voran...

    Danke für die Hilfe - es funktioniert mit der leichten variante ...

    Gruß Danijel

    Mittwoch, 8. Juni 2016 08:47