Laden...

DataGrid ItemCommand feuert im IE nicht!

Erstellt von phlasher vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.185 Views
P
phlasher Themenstarter:in
13 Beiträge seit 2005
vor 17 Jahren
DataGrid ItemCommand feuert im IE nicht!

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?

1.130 Beiträge seit 2005
vor 17 Jahren

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?

P
phlasher Themenstarter:in
13 Beiträge seit 2005
vor 17 Jahren

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 😉

P
phlasher Themenstarter:in
13 Beiträge seit 2005
vor 17 Jahren

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++;
            }
        }
    }