Gridview事件被触发两次 [英] Gridview event getting fired twice

查看:107
本文介绍了Gridview事件被触发两次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个调用两个子网格的父网格。但由于某种不明原因,他们被解雇了两次。我似乎无法弄清楚这段代码的问题。任何人都可以指导我吗?



后端代码(C#):



I have a parent grid which calls two child grids. But for some unknown reason they are getting fired twice. I cant't really seem to figure out the problem with this code. Can anyone guide me?

Backend Code (C#):

protected void grdGrpPrntRpt_RowDataBound(object sender, GridViewRowEventArgs e)
   {
       try
       {
           if (e.Row.RowType == DataControlRowType.DataRow)
           {
               TextBox litGrp = (TextBox)e.Row.FindControl("litGrp");
               litGrp.Text = DataBinder.Eval(e.Row.DataItem, "GroupName").ToString();
               ViewState["GroupName"] = litGrp.Text;
               DataSet ds = (DataSet)ViewState["ds"];
               DataView dv = ds.Tables[3].DefaultView;
               dv.RowFilter = "GroupName='" + litGrp.Text + "'";
               DataTable dt = dv.ToTable();
               GridView gvinner = (GridView)e.Row.FindControl("grdInnerMain");
               gvinner.DataSource = dt;
               gvinner.DataBind();
           }
       }
       catch (Exception Ex)
       {
           //report error
       }
   }


   protected void grdInnerMain_RowDataBound(object sender, GridViewRowEventArgs e)
   {
       try
       {
           if (e.Row.RowType == DataControlRowType.DataRow)
           {
               TextBox litUsr = (TextBox)e.Row.FindControl("litUsr");
               litUsr.Text = DataBinder.Eval(e.Row.DataItem, "FirstName").ToString();
               // string username=
               DataSet ds = (DataSet)ViewState["ds"];
               DataView dv = ds.Tables[3].DefaultView;
               dv.RowFilter = "userName='" + DataBinder.Eval(e.Row.DataItem, "UserName").ToString().Replace("'", "''") + "' and GroupName='" + ViewState["GroupName"].ToString() + "'";
               DataTable dt = dv.ToTable();
               totalPages = 0;
               totalCost = 0;
               GridView gvinner2 = (GridView)e.Row.FindControl("innerGrid");
               gvinner2.DataSource = dt;
               gvinner2.DataBind();
           }
       }

       catch (Exception Ex)
       {
           //report error
       }

   }
   protected void innerGrid_RowDataBound(object sender, GridViewRowEventArgs e)
   {
       try
       {
           if (e.Row.RowType == DataControlRowType.DataRow)
           {
               DataView dv = ((DataSet)ViewState["dspaper"]).Tables[0].DefaultView;
               dv.RowFilter = "paperid=" + Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "paperid").ToString());
               DataTable dt = dv.ToTable();
               e.Row.Cells[0].Text = dt.Rows[0]["PaperName"].ToString();
               //  e.Row.Cells[2].Text = DataBinder.Eval(e.Row.DataItem, "TotalPagesPrinted").ToString() == "0" ? DataBinder.Eval(e.Row.DataItem, "TotalPagesSent").ToString() : DataBinder.Eval(e.Row.DataItem, "TotalPagesPrinted").ToString();
               e.Row.Cells[2].Text = DataBinder.Eval(e.Row.DataItem, "TotalPage").ToString() == "0" ? DataBinder.Eval(e.Row.DataItem, "Pages_Sent").ToString() : DataBinder.Eval(e.Row.DataItem, "TotalPage").ToString();
               // e.Row.Cells[3].Text = Convert.ToDouble(e.Row.Cells[3].Text.ToString()).ToString("0.00");
               totalPages += Convert.ToInt32(e.Row.Cells[2].Text.ToString());
               totalCost += Convert.ToDouble(e.Row.Cells[3].Text.ToString());
               e.Row.Cells[1].Text = DataBinder.Eval(e.Row.DataItem, "Color").ToString() == "0" ? "B & W" : "Color";
           }
           if (e.Row.RowType == DataControlRowType.Footer)
           {
               e.Row.Cells[2].Text = totalPages.ToString();
               e.Row.Cells[3].Text = totalCost.ToString("0.00");
           }
           if (e.Row.RowType == DataControlRowType.Header)
           {
               e.Row.Cells[0].Text = CResourcesManager.GetString("grdHeaderMediaReport");
               e.Row.Cells[1].Text = CResourcesManager.GetString("grdHeaderColorReport");
               e.Row.Cells[2].Text = CResourcesManager.GetString("grdHeaderPagesReport"); ;
               e.Row.Cells[3].Text = CResourcesManager.GetString("grdHeaderTotalCostReport");
           }
       }
       catch
       { }
   }





前端代码:





Frontend Code:

<asp:GridView Width="100%" ID="grdGrpPrntRpt" runat="server" AutoGenerateColumns="False"

                        CellPadding="0" CellSpacing="2" BorderWidth="0px" ShowHeader="false" RowStyle-HorizontalAlign="Left"

                        OnRowDataBound="grdGrpPrntRpt_RowDataBound">
                        <Columns>
                            <asp:TemplateField>
                                <ItemTemplate>
                                    <table id="tblInnerHeader"  runat="server" width="100%" cellspacing="0" cellpadding="0">
                                        <tr bgcolor="gray" valign="top">
                                            <td width="20%" height="30px">
                                                 
                                                <asp:TextBox ID="litGrp" ForeColor="White" BackColor="Gray" CssClass="LabelText2"

                                                    runat="server" BorderStyle="None" BorderWidth="0"></asp:TextBox>
                                            </td>
                                            <td width="2%">
                                            </td>
                                            <td width="78%" align="left">
                                                <asp:ImageButton ID="imgMainShowHide" runat="server" ImageUrl="~/Images/plus.jpg"

                                                    OnClick="imgMainShowHide_Click" />
                                            </td>
                                        </tr>
                                    </table>
                                    <table id="tblFirstInnerGrid"  runat="server" visible="false" width="100%" cellspacing="2"

                                        cellpadding="0">
                                        <tr>
                                            <td align="center">
                                                <asp:GridView Width="100%" ID="grdInnerMain" runat="server" AutoGenerateColumns="False"

                                                    CellPadding="0" CellSpacing="2" BorderWidth="0px" ShowHeader="false" RowStyle-HorizontalAlign="Left"

                                                    OnRowDataBound="grdInnerMain_RowDataBound">
                                                    <Columns>
                                                        <asp:TemplateField>
                                                            <ItemTemplate>
                                                                <table id="tblHeader"  runat="server" width="100%" cellspacing="0" cellpadding="0">
                                                                    <tr bgcolor="Wheat" valign="top">
                                                                        <td width="20%" height="25px">
                                                                             
                                                                            <asp:TextBox ID="litUsr" ForeColor="Blue" BackColor="Wheat" CssClass="LabelText2"

                                                                                runat="server" BorderStyle="None" BorderWidth="0"></asp:TextBox>
                                                                        </td>
                                                                        <td width="2%">
                                                                        </td>
                                                                        <td width="78%" align="left">
                                                                            <asp:ImageButton ID="imgShowHide" runat="server" ImageUrl="~/Images/plus.jpg" OnClick="imgShowHide_Click" />
                                                                        </td>
                                                                    </tr>
                                                                </table>
                                                                <table id="tblInnerGrid"  runat="server" visible="false" width="100%" cellspacing="2"

                                                                    cellpadding="0">
                                                                    <tr>
                                                                        <td align="center">
                                                                            <asp:GridView ID="innerGrid" runat="server" AutoGenerateColumns="False" CellPadding="0"

                                                                                CellSpacing="2" HeaderStyle-CssClass="GridHeaderNoSorting" BorderWidth="0px"

                                                                                ShowFooter="true" RowStyle-HorizontalAlign="Left" Width="98%" OnRowDataBound="innerGrid_RowDataBound">
                                                                                <Columns>
                                                                                    <asp:TemplateField>
                                                                                        <ItemTemplate>
                                                                                            <%-- <asp:Label ID="lblMedia" runat="server"></asp:Label>--%>
                                                                                        </ItemTemplate>
                                                                                    </asp:TemplateField>
                                                                                    <%--<asp:BoundField DataField="Color" HeaderText="Color/ B & W" /> --%>
                                                                                    <asp:TemplateField HeaderText="Color/ B & W">
                                                                                        <ItemTemplate>
                                                                                            <%--   <asp:Label ID="lblColor" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Color").ToString()=="0" ? "B & W" :"Color" %>'></asp:Label>--%>
                                                                                        </ItemTemplate>
                                                                                    </asp:TemplateField>
                                                                                    <%--<asp:BoundField DataField="TotalPagesPrinted" ItemStyle-HorizontalAlign="Center" />--%>
                                                                                    <asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"

                                                                                        FooterStyle-HorizontalAlign="Center">
                                                                                        <ItemTemplate>
                                                                                            <%--<asp:Label ID="lblPagesPrinted" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Color").ToString()=="0" ? "B & W" :"Color" %>'></asp:Label>--%>
                                                                                        </ItemTemplate>
                                                                                    </asp:TemplateField>
                                                                                    <asp:BoundField DataField="Total_Cost" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"

                                                                                        FooterStyle-HorizontalAlign="Center" />
                                                                                </Columns>
                                                                                <HeaderStyle CssClass="GridHeaderNoSorting" />
                                                                                <AlternatingRowStyle CssClass="GridAlternateRowStyle" />
                                                                                <RowStyle CssClass="GridRowStyle" />
                                                                                <FooterStyle CssClass="GridFooter" HorizontalAlign="Left" />
                                                                            </asp:GridView>
                                                                        </td>
                                                                    </tr>
                                                                </table>
                                                            </ItemTemplate>
                                                        </asp:TemplateField>
                                                    </Columns>
                                                    <AlternatingRowStyle CssClass="GridAlternateRowStyle" />
                                                    <RowStyle CssClass="GridRowStyle" />
                                                </asp:GridView>
                                            </td>
                                        </tr>
                                    </table>
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                        <AlternatingRowStyle CssClass="GridAlternateRowStyle" />
                        <RowStyle CssClass="GridRowStyle" />
                    </asp:GridView>

推荐答案

just remove the OnRowDataBound=\"grdGrpPrntRpt_RowDataBound\" and rest from the front end. Your problem will be solved
just remove the OnRowDataBound="grdGrpPrntRpt_RowDataBound" and rest from the front end. Your problem will be solved


Hello Professional



Some time this problem occurs ..



Generally every Developer getting Affected by this.



Try to Just Remove the Specific Event where Problem Detecting and Create it Again



and below the link there is good discussion like this problem

Take a look may helps You with some your Own Clue ...





http://forums.asp.net/t/1002747.aspx[^]





Happy to Help!!
Hello Professional

Some time this problem occurs ..

Generally every Developer getting Affected by this.

Try to Just Remove the Specific Event where Problem Detecting and Create it Again

and below the link there is good discussion like this problem
Take a look may helps You with some your Own Clue ...


http://forums.asp.net/t/1002747.aspx[^]


Happy to Help!!


这篇关于Gridview事件被触发两次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆