1

我想我已经弄清楚这个程序会发生什么。

这是标记的一部分。

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </asp:ToolkitScriptManager>
        <asp:UpdatePanel ID="upGrid" runat="server">
            <ContentTemplate>
                <asp:GridView ID="dgvPeliculas" runat="server" AllowPaging="true" PagerStyle-CssClass="pgr"
                    CssClass="mGrid" EmptyDataText="No hay más películas" OnPageIndexChanging="dgvPeliculas_PageIndexChanging1"
                    EnableSortingAndPagingCallbacks="true" OnRowDataBound="dgvPeliculas_RowDataBound">
                </asp:GridView>                
            </ContentTemplate>
        </asp:UpdatePanel>
                <table class="LogIn">
                    <tr>
                        <td>
                            <asp:UpdatePanel ID="upAlquiler" runat="server">
                                <ContentTemplate>
                                    <asp:Button ID="btnAlquilar" runat="server" Text="Alquilar" CssClass="AdminButtons"
                                        OnClick="btnAlquilar_Click" OnClientClick="javascript: Click_Alquilar(); return false" />
                                </ContentTemplate>
                            </asp:UpdatePanel>
                        </td>
                        <td>
                            <asp:Button ID="btnNuevo" runat="server" Text="Nuevo" CssClass="AdminButtons" OnClick="btnNuevo_Click"
                                OnClientClick="javascript: Click_Nuevo(); return false" />
                        </td>
                        <td>
                            <asp:Button ID="btnEditar" runat="server" Text="Editar" CssClass="AdminButtons" OnClick="btnEditar_Click"
                                OnClientClick="javascript: Click_Editar(); return false" />
                        </td>
                        <td>
                            <asp:Button ID="btnBorrar" runat="server" Text="Borrar" OnClientClick="javascript: Click_Borrar(); return false"
                                CssClass="AdminButtons" />
                        </td>
                    </tr>
                </table>

我已经对它进行了编码,以便在选择一行时按钮会对其进行修改。通过更改“onclick”事件(在 RowDataBound 函数期间更改)和 Javascript 函数来选择行。

这就是我更改背后代码的方式:

protected void dgvPeliculas_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            dgvPeliculas.CssClass = "mGrid";
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string rowID = String.Empty;
                rowID = "row" + e.Row.RowIndex;
                e.Row.Attributes.Add("id", rowID);
                e.Row.Attributes.Add("onclick", "onClick(" + "'" + rowID + "'" + ")");
                e.Row.Attributes.Add("onmouseover", "this.style.cursor='pointer'; this.style.backgroundColor = '#B0C5BB';");
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor = '';");
            }
        }

这是 JavaScript 函数:

/

 function onClick(rowID)
     {
         //Si no hay ninguna seleccionada
         if (selected == '') {
             index = rowID;
             selected = document.getElementById(rowID);
             selected.onmouseover = '';
             selected.onmouseout = '';
             selected.style.backgroundColor = 'yellow';
         }
         else {
             //Si se deselecciona
             if (selected == document.getElementById(rowID)) {
                 selected.onmouseover = onmouseover;
                 selected.onmouseout = onmouseout;
                 selected.style.backgroundColor = '';
                 selected = '';
                 index = '';
             }
             //Deseleccionar el actual y seleccionar el nuevo
             else {
                 selected.onmouseover = onmouseover;
                 selected.onmouseout = onmouseout;
                 selected.style.backgroundColor = '';

                 index = rowID;
                 selected = document.getElementById(rowID);
                 selected.onmouseover = '';
                 selected.onmouseout = '';
                 selected.style.backgroundColor = 'yellow';
             }
         }
     }

New 按钮显示了一个 ModalPopupExtender,它从那里调用一个 JavaScript 函数来验证其内容,然后回发到后面的代码以检查和更新数据库。显然,它还将寄存器附加到网格上。

编辑按钮和其余通过异常。编辑功能是特殊的,因为它的功能类似于新建按钮的功能。它显示了 ModalPopupExtender,转到 JavaScript 函数,执行回发,到数据库和更新。但这需要选择 Grid 中的行之一(否则,没有什么可编辑的)。我相信这就是它抛出“Invalid Postback or Callback”异常的原因。相同的条件适用于其他按钮,并且它们都抛出相同的异常。全部,除了新建,不需要选择行。

你认为这就是我遇到这个问题的原因吗?如果是这样,我该如何解决?

抱歉,如果您认为这是我以前的一个帖子的转贴,但我无法解决问题,我认为这给了我一个新的线索,我也无法解决。

谢谢。

4

0 回答 0