C#后台生成gridview列,同时绑定多个表数据

来源:互联网 发布:csol买淘宝欢乐积分 编辑:程序博客网 时间:2024/04/29 04:19

通常在开发中会遇到一个界面需要读取多个表的数据单独显示到界面当中,一般可能会想用多个gridview来实现数据的读取,但是期间会导致代码冗余量增加,因而会想用一个空间去实现对此利用。

前台index.aspx部分主要代码:

<table>   <tr>     <td class="style3">         开始时间:     </td>     <td>         <asp:TextBox ID="TextBoxStartTime" runat="server" Width="180px" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"></asp:TextBox>     </td>     <td class="style3">         结束时间:     </td>      <td>        <asp:TextBox ID="TextBoxEndTime" runat="server" Width="180px" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})"></asp:TextBox>     </td>     <td>        <asp:Button ID="ButtonConfirmDate" runat="server" Text="检索" Width="90px" OnClick="ButtonConfirmDate_Click" />        <asp:Button ID="ButtonPrint" runat="server" Text="导出报表" OnClick="ButtonPrint_Click" />     </td>   </tr>   <tr>     <td class="style3">       </td>       <td colspan="3">       <asp:RadioButtonList ID="RdBL" runat="server" AutoPostBack="true" RepeatDirection="Horizontal"OnSelectedIndexChanged="RdBL_SelectedIndexChanged">           <asp:ListItem Value="1" Selected="True">注册用户</asp:ListItem>           <asp:ListItem Value="0">消费记录</asp:ListItem>           <asp:ListItem Value="2">管理充值</asp:ListItem>           <asp:ListItem Value="3">用户充值</asp:ListItem>            <asp:ListItem Value="5">支付宝微信充值</asp:ListItem>           <asp:ListItem Value="6">充值VIP</asp:ListItem>       </asp:RadioButtonList>     </td>   </tr></table><table>      <tr>          <td>              <asp:GridView ID="GdVOfConclusion" runat="server" Width="100%" PageSize="15" AllowPaging="True" OnRowDataBound="GdVOfConclusion_RowDataBound" onpageindexchanging="GdVOfConclusion_PageIndexChanging">                    <RowStyle CssClass="row" ForeColor="#000066" Height="30px" HorizontalAlign="Center" VerticalAlign="Middle" />                      <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />                         <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" Height="30px" HorizontalAlign="Center" VerticalAlign="Middle" />                         <PagerTemplate>                         <br />                         <asp:Label ID="lblPage" runat="server" Text='<%# "第" + (((GridView)Container.NamingContainer).PageIndex + 1)  + "页/共" + (((GridView)Container.NamingContainer).PageCount) + "页" %> '></asp:Label>                         <asp:LinkButton ID="lbnFirst" runat="Server" Text="首页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'                           CommandName="Page" CommandArgument="First"></asp:LinkButton>                         <asp:LinkButton ID="lbnPrev" runat="server" Text="上一页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'                                                                        CommandName="Page" CommandArgument="Prev"></asp:LinkButton>                         <asp:LinkButton ID="lbnNext" runat="Server" Text="下一页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>'                                                                        CommandName="Page" CommandArgument="Next"></asp:LinkButton>                         <asp:LinkButton ID="lbnLast" runat="Server" Text="尾页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>'                         CommandName="Page" CommandArgument="Last"></asp:LinkButton>                         到第<asp:TextBox runat="server" ID="inPageNum"></asp:TextBox>页                         <asp:Button ID="ButtonGo" CommandName="go" Text="GO" runat="server" /><br />                         </PagerTemplate>               </asp:GridView>           </td>       </tr></table>
后台index.aspx.cs主要代码:
        /// <summary>        /// 绑定数据        /// </summary>        protected void PageBind()        {            string dtB = TextBoxStartTime.Text;            string dtE = TextBoxEndTime.Text;            DataTable dt = new DataTable();            GdVOfConclusion.AutoGenerateColumns = false;//设置自动产生列为false            string select=RdBL.SelectedValue.ToString();            switch (RdBL.SelectedValue)            {                case "0":                    dt = Conclu.GetCostOfJob(dtB, dtE);     //消费记录                    GridViewBind(GdVOfConclusion, dt, "llJobId", select);                    break;                case "1":                    dt = Conclu.GetRegisterInfor(dtB, dtE);     //注册用户                    GridViewBind(GdVOfConclusion, dt, "iIndex", select);                    break;                case "2":    //管理充值                case "3":    // 用户充值                case "5":     //支付宝微信充值                case "6":                    dt = Conclu.GetAlipayRecharge(dtB, dtE, RdBL.SelectedValue.ToString(), "1");      //购买VIP和抵扣VIP  (6和9)                    GridViewBind(GdVOfConclusion, dt, "sCompanyId", select);                    break;                default:                    break;            }        }        /// <summary>        /// 绑定生成GridView        /// </summary>        /// <param name="gdv">要绑定的GridView</param>        /// <param name="dtblDataSource">GridView的数据源</param>        /// <param name="strDataKey">GridView的DataKeyNames</param>        public static void GridViewBind(GridView gdv, DataTable dtblDataSource, string strDataKey, string select)        {            gdv.Columns.Clear();            gdv.AutoGenerateColumns = false;            gdv.DataSource = dtblDataSource;            //gdv.DataKeyNames = new string[] { strDataKey };  //绑定主键            for (int i = 0; i < dtblDataSource.Columns.Count; i++)   //绑定普通数据列            {                string field = dtblDataSource.Columns[i].ColumnName;                if (field == "iRenderType" || field == "iState" || field == "iType" || field == "sCompanyId")                {                    continue;                }                if ((field == "sRemitter" || field == "sReceiver") && (select == "2" || select == "5" || select == "6"))                {                    continue;                }                BoundField bfColumn = new BoundField();                switch (dtblDataSource.Columns[i].ColumnName)                {                    case "llJobId": dtblDataSource.Columns[i].ColumnName = "任务号";                        break;                    case "sJobName": dtblDataSource.Columns[i].ColumnName = "项目名";                        break;                    case "iFrameCount": dtblDataSource.Columns[i].ColumnName = "帧数";                        break;                    case "dtFinishTime": dtblDataSource.Columns[i].ColumnName = "结束时间";                        break;                    case "dtCreateTime": dtblDataSource.Columns[i].ColumnName = "创建时间";                        break;                    case "iAdminFees": dtblDataSource.Columns[i].ColumnName = "管理费用";                        break;                    case "iUserFees": dtblDataSource.Columns[i].ColumnName = "用户费用";                        break;                    case "irealfees": dtblDataSource.Columns[i].ColumnName = "真实费用";                        break;                    case "iFees": dtblDataSource.Columns[i].ColumnName = "供应商费用";                        break;                    case "iUserValue": dtblDataSource.Columns[i].ColumnName = "折扣";                        break;                    case "iUsePcCount": dtblDataSource.Columns[i].ColumnName = "机器数";                        break;                    case "sVirtualCoId": dtblDataSource.Columns[i].ColumnName = "用户名";                        break;                    case "dtEndRendTime": dtblDataSource.Columns[i].ColumnName = "结束渲染时间";                        break;                    case "iDiscountFee": dtblDataSource.Columns[i].ColumnName = "减免费用";                        break;                    case "sProviderId": dtblDataSource.Columns[i].ColumnName = "农场号";                        break;                    case "Column1": dtblDataSource.Columns[i].ColumnName = "任务类型";                        break;                        //                    case "llValue": dtblDataSource.Columns[i].ColumnName = "实充金额";                        break;                    case "llSum": dtblDataSource.Columns[i].ColumnName = "充值金额";                        break;                    case "sUserName": dtblDataSource.Columns[i].ColumnName = "充值ID";                        break;                    case "sRemark": dtblDataSource.Columns[i].ColumnName = "充值信息";                        break;                    case "sRemitter": dtblDataSource.Columns[i].ColumnName = "汇款方";                        break;                    case "sReceiver": dtblDataSource.Columns[i].ColumnName = "收款方";                        break;                    case "iIndex": dtblDataSource.Columns[i].ColumnName = "编号";                        break;                    case "iTypes": dtblDataSource.Columns[i].ColumnName = "报表类型";                        break;                    case "sComUserId": dtblDataSource.Columns[i].ColumnName = "用户名ID";                        break;                    case "sMacAddress": dtblDataSource.Columns[i].ColumnName = "Mac地址";                        break;                    case "sIP": dtblDataSource.Columns[i].ColumnName = "IP地址";                        break;                    case "sIPAddress": dtblDataSource.Columns[i].ColumnName = "IP对应地理位置";                        break;                    case "dtLandDate": dtblDataSource.Columns[i].ColumnName = "首次登录日期";                        break;                    case "sAgentMan": dtblDataSource.Columns[i].ColumnName = "销  售";                        break;                    default:                        break;                }                bfColumn.DataField = dtblDataSource.Columns[i].ColumnName;                  bfColumn.HeaderText = dtblDataSource.Columns[i].Caption;                gdv.Columns.Add(bfColumn);            }            gdv.DataBind();//绑定        }           #region  gridview方法        public void GdVOfConclusion_RowDataBound(object sender, GridViewRowEventArgs e)        {            if (e.Row.RowType == DataControlRowType.DataRow)            {                e.Row.Attributes.Add("onmouseover", "oldColor=this.style.backgroundColor;this.style.backgroundColor='#87CEEB'");                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=oldColor");            }        }        protected void GdVOfConclusion_PageIndexChanging(object sender, GridViewPageEventArgs e)        {            GdVOfConclusion.PageIndex = e.NewPageIndex;            PageBind();            TextBox tb = (TextBox)GdVOfConclusion.BottomPagerRow.FindControl("inPageNum");            tb.Text = (GdVOfConclusion.PageIndex + 1).ToString();        }        protected void GdVOfConclusion_RowCommand(object sender, GridViewCommandEventArgs e)        {            if (e.CommandName == "go")            {                try                {                    TextBox tb = (TextBox)GdVOfConclusion.BottomPagerRow.FindControl("inPageNum");                    int num = Int32.Parse(tb.Text);                    GridViewPageEventArgs ea = new GridViewPageEventArgs(num - 1);                    GdVOfConclusion_PageIndexChanging(null, ea);                }                catch                {                }            }        }           #endregion                             /**********   导出为excel表  begin ********/        /// <summary>        /// 打印报表数据        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void ButtonPrint_Click(object sender, EventArgs e)        {            PageBind();            DataTable dsTable = this.GdVOfConclusion.DataSource as DataTable;            if (GdVOfConclusion.Rows.Count > 0)            {                Response.ContentEncoding = Encoding.GetEncoding("GB2312");//设置编码格式                Response.ContentType = "application/vnd.ms-excel";//设置输入类型为Excel文件,指定返回的是一个不能被客户端读取的流,必须被下载                Response.AddHeader("Content-Disposition", "attachment;filename=Text.xls");//添加Http表头,将文件保存为Text.xls                string columnHeader = "";//保存表头字符                string columnContent = "";//保存每行的数据内容                for (int i = 0; i < dsTable.Columns.Count; i++)                {                    if (i == dsTable.Columns.Count - 1)                    {                        columnHeader += dsTable.Columns[i].Caption.ToString() + "\n";//当当前列为最后一列时要换行                    }                    else                    {                        columnHeader += dsTable.Columns[i].Caption.ToString() + "\t";                    }                }                Response.Write(columnHeader);                //添加每行的数据信息                            foreach (DataRow dr in dsTable.Rows)                {                    for (int j = 0; j < dsTable.Columns.Count; j++)                    {                        if (j == dsTable.Columns.Count - 1)                        {                            columnContent += dr[j] + "\n";//当当前列为最后一列时换行                        }                        else                        {                            columnContent += dr[j] + "\t";                        }                    }                    Response.Write(columnContent);                    columnContent = "";                }                Response.Write(columnContent);                columnContent = "";                Response.End();            }            else            {                showMessage("检索数据为空,请选择!");            }        }                              /**********   导出为excel表  end ********/               /// <summary>        /// 搜索        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>               protected void ButtonConfirmDate_Click(object sender, EventArgs e)        {            PageBind();        }        /// <summary>        /// 选择报表类型        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void RdBL_SelectedIndexChanged(object sender, EventArgs e)        {            PageBind();        }        /// <summary>        /// 消息        /// </summary>        /// <param name="msg"></param>        public void showMessage(string msg)        {            ClientScript.RegisterStartupScript(GetType(), "___asp2TrainingShowMessage",                                                 "<script language=\"javascript\">var str=\"" +                                                 msg.Replace("\\", "\\\\").Replace("\r\n", " ").Replace("\"", "'") +                                                 "\";alert(str.replace(/<br>/g,'\\n').replace(/<BR>/g,'\\n'));</script>");        }
       

页面实现的效果图:

这里就不一一列举了。


1 0
原创粉丝点击