Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
DataGrid ItemCommand feuert im IE nicht!
phlasher
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

DataGrid ItemCommand feuert im IE nicht!

beantworten | zitieren | melden

Hi alle,

ich habe ein DataGrid mit einer Schaltflächenspalte (LinkButton) und einen im OnItemCommand zugewiesenen Handler dafür.
Bis gestern hatte ich auch noch gar kein Problem, da Firefox zuverlässig das ItemCommand feuert und den Code richtig ausführt.

Der Internet Explorer (v. 6 und 7) dagegen feuert das Event nur alle ca. 3-4 Klicks und ändert zwar serverseitig dann auch das Erforderliche (in diesem Fall: DataGridItems Visible machen und umgekehrt), aber das DataGrid ändert sich auf ClientSeite nicht im Geringsten....

Was muss ich denn (mal wieder!!!!) beim IE besonderes beachten, damit er sinnvoll arbeitet??

ViewState ist true, gefüllt wird das DataGrid nur im !PostBack... das ist die Umgebung, die ich auch gerne weiter benutzen würde...

Jemand eine Idee?
private Nachricht | Beiträge des Benutzers
.Kai
myCSharp.de - Member

Avatar #avatar-1836.gif


Dabei seit:
Beiträge: 1184

beantworten | zitieren | melden

Hallo phlasher,

bitte Code posten.

Der Internet Explorer hat in der langen Zeit, die ich jetzt mit ASP.NET arbeite noch nie Probleme hinsichtlich der Events gemacht.

Hast Du vielleicht mehrere Forms Tags auf der Seite?
private Nachricht | Beiträge des Benutzers
phlasher
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

beantworten | zitieren | melden

Ausschnitt aus der Master.master:


<div>
<form id="form1" runat="server">
<asp:contentplaceholder id="content" runat="server">
</asp:contentplaceholder>
</form>
</div>

Die entsprechende SubForm:


<%@ Page MasterPageFile="~/MasterPage.master" CodeFile="~/EmployeesJobsOverview.aspx.cs" Language="C#" Inherits="EmployeesJobsOverview" Title="MIS - Auftrags-Übersicht" EnableEventValidation="false" %>

<asp:Content ID="EmployeesJobsContent" ContentPlaceHolderID="content" runat="server">
    
    <asp:Calendar ID="cal" runat="server" BackColor="White" BorderColor="#999999"
        CellPadding="4" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt"
        ForeColor="Black" Height="180px" Width="200px" SelectedDate="2050-02-12" OnSelectionChanged="cal_SelectionChanged">
        <SelectedDayStyle BackColor="#666666" Font-Bold="True" ForeColor="White" />
        <TodayDayStyle BackColor="#CCCCCC" ForeColor="Black" />
        <SelectorStyle BackColor="#CCCCCC" />
        <WeekendDayStyle BackColor="#FFFFCC" />
        <OtherMonthDayStyle ForeColor="Gray" />
        <NextPrevStyle VerticalAlign="Bottom" />
        <DayHeaderStyle BackColor="#CCCCCC" Font-Bold="True" Font-Size="7pt" />
        <TitleStyle BackColor="#999999" BorderColor="Black" Font-Bold="True" />
    </asp:Calendar>
    <br />
    <asp:LinkButton ID="btnOpenAll" runat="server" OnClick="btnOpenAll_Click">Alle öffnen</asp:LinkButton>&nbsp;
    <asp:LinkButton ID="lbCloseAll" runat="server" OnClick="lbCloseAll_Click">Alle schließen</asp:LinkButton>
    <br />
    <br />
    <asp:DataGrid OnItemCommand="DataGrid1_ItemCommand" ID="DataGrid1" runat="server" CellPadding="10" ForeColor="Black" GridLines="None" AutoGenerateColumns="False" OnPreRender="DataGrid1_PreRender" BackColor="#CCCCCC" BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellSpacing="2" Font-Names="Verdana" Font-Size="Small">
        <FooterStyle BackColor="#CCCCCC" />
        <SelectedItemStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" Mode="NumericPages" />
        <ItemStyle BackColor="White" />
        <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
        <Columns>
            <asp:ButtonColumn Text="p" Visible="False" ButtonType="PushButton"></asp:ButtonColumn>
            <asp:BoundColumn DataField="RecordId" HeaderText="RecordId" Visible="False"></asp:BoundColumn>
            <asp:BoundColumn DataField="ParentId" HeaderText="ParentId" Visible="False"></asp:BoundColumn>
            <asp:BoundColumn DataField="Title" HeaderText="Auftrag"></asp:BoundColumn>
            <asp:BoundColumn DataField="TreeLevel" HeaderText="TreeLevel" Visible="False"></asp:BoundColumn>
            <asp:BoundColumn DataField="TreeChildNodes" HeaderText="TreeChildNodes" Visible="False">
            </asp:BoundColumn>
            <asp:BoundColumn DataField="ANr" HeaderText="ANr" Visible="False"></asp:BoundColumn>
            <asp:BoundColumn DataField="RNr" HeaderText="RNr"></asp:BoundColumn>
            <asp:BoundColumn DataField="Meldemenge" HeaderText="Meldemenge"></asp:BoundColumn>
            <asp:BoundColumn DataField="Ausschuss" HeaderText="Ausschuss"></asp:BoundColumn>
            <asp:BoundColumn DataField="TA" HeaderText="TA"></asp:BoundColumn>
        </Columns>
    </asp:DataGrid><br />
    

</asp:Content>

Es gibts also eigentlich nur eine Form, die um den Platzhalter in der MasterPage liegt...
aber danke schon mal für die Antwort, vielleicht kannste mit dem Code ja was anfangen
private Nachricht | Beiträge des Benutzers
phlasher
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

beantworten | zitieren | melden

Der Vollständigkeit halber hier noch die DataGrid1_PreRender. Hier mache ich die Einrückung für die Zeilen (handelt sich ja um einen 3-stufigen Baum) und lasse einen LinkButton das Command der ButtonColumns ausführen: btnIcon.OnClientClick = ClientScript.GetPostBackClientHyperlink(button, "");


protected void DataGrid1_PreRender(object sender, EventArgs e)
    {
        int cnt = 0;
        foreach (DataGridItem item in DataGrid1.Items)
        {
            if (item.Visible)
            {
                int TreeChildNodes = Convert.ToInt16(item.Cells[5].Text);
                int TreeLevel = Convert.ToInt16(item.Cells[4].Text);

                if (TreeLevel == 0)
                {
                    item.BackColor = System.Drawing.Color.FromArgb(255, 255, 204);
                }
                else if (TreeLevel == 1)
                {
                    item.BackColor = System.Drawing.Color.FromArgb(255, 255, 240);
                }

                Button button = (Button)item.Cells[0].Controls[0];

                Label pad = new Label();
                for (int i = 0; i < TreeLevel; i++)
                {
                    pad.Text += "&nbsp;&nbsp;&nbsp;";
                }

                Label lblAGTitle = new Label();

                if (!item.Cells[3].Text.Equals("&nbsp;"))
                {
                    lblAGTitle.Text = "&nbsp;&nbsp;" + item.Cells[3].Text;
                }
                else
                {
                    lblAGTitle.Text = "&nbsp;&nbsp;" + item.Cells[6].Text;
                }

                LinkButton btnIcon = new LinkButton();

                if (TreeChildNodes > 0)
                {
                    btnIcon.Text = "<img src='" + button.Text + ".gif'>";
                    btnIcon.OnClientClick = ClientScript.GetPostBackClientHyperlink(button, "");
                }
                else
                {
                    btnIcon.Text = "<img src='arbeiter.gif' width='20px'>";
                    btnIcon.OnClientClick = "";
                }

                item.Cells[3].Controls.Add(pad);
                item.Cells[3].Controls.Add(btnIcon);
                item.Cells[3].Controls.Add(lblAGTitle);

                cnt++;
            }
        }
    }
private Nachricht | Beiträge des Benutzers