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
- C#后台生成gridview列,同时绑定多个表数据
- 关于后台生成的模板列的数据绑定问题
- 后台动态生成GridView列和模版
- GridView 数据绑定列的格式化输出
- GridView动态添加模板列(数据绑定)
- Gridview模板列绑定数据字段
- gridview动态绑定列名和数据
- GridView 模板列中的数据绑定
- DataGridView绑定数据,同时绑定DataGridViewComboBoxColumn列的值
- 给gridview动态绑定数据列及命令列
- C# 动态生成GridView的列
- gridview模板列绑定gridview
- GridView动态绑定列
- GridView动态绑定列
- GridView 动态绑定列
- gridview列绑定HyperLink
- GridView 动态绑定列
- VS2005 GridView动态绑定数据源(交叉表) 动态绑定列 动态生成模板列 自定义表头
- docker服务启动失败
- Coins in a Line
- iOS自定义活动提示框
- sublime插件
- 对话框式退出程序
- C#后台生成gridview列,同时绑定多个表数据
- photoshop的滤色和正片叠底的混合模式分析
- Htm5 求同时被3和7整除的数
- LINQ To SQL 语法及实例大全
- css3相关
- JDBC的超时原理
- IOS的fat类型文件和thin类型文件的转换
- eclipse下配置 jsp Servlet
- 一个批处理使用MongDB就方便多了