效果如下图指定要查询的资料后再设定 ObjectDataSource 的 SelectMethod使用 ObjectDataSource 的好处是不用再自行撰写分页排序的code
aspx的程式如下 <body>
<form id=form runat=server>
<script type=text/javascript>
//<![CDATA[
function WebForm_OnSubmit() {
$blockUI({ css: {
border: none padding: px backgroundColor: # opacity: color: #fff
webkitborderradius: px
mozborderradius: px
}
})
return true;
}
//]]>
</script>
<fieldset >
<legend><font color=darkblue size=><b></b></font></legend>
<table id=QryTable border= >
<tr>
<td class=TdTitle >查询资料 </td>
<td class=TdContent >
<asp:DropDownList ID=QDDLReport AutoPostBack=true runat=server></asp:DropDownList>
</td>
<td class=TdTitle id = QT runat=server>资料区间 </td>
<td class=TdContent id = Q runat=server>
<asp:TextBox ID=QtxtsDate runat=server Width=pt class=clscustxt></asp:TextBox> ~
<asp:TextBox ID=QtxteDate runat=server Width=pt class=clscustxt></asp:TextBox>
</td>
<td>
<asp:Button ID=btnQuery runat=server class=clsbtn Text=查 询
OnClientClick=WebForm_OnSubmit() onclick=btnQuery_Click/>
</td>
</tr>
</table>
</fieldset>
<div id=div_count runat=server></div>
<div >
<asp:GridView ID=gvList runat=server AllowPaging=True AllowSorting=True AutoGenerateColumns=False BackColor=White
CellPadding= DataSourceID=ObjectDataSource EnableModelValidation=True ForeColor=Black GridLines=None
CellSpacing= CssClass=clsTable
FontSize=pt Width=%
PagerStyleCssClass=pgr ShowFooter=True
onpageindexchanging=gvList_PageIndexChanging>
<AlternatingRowStyle BackColor=#DDDDFF />
<FooterStyle BackColor=#BBBBBB ForeColor=White HorizontalAlign=Center />
<HeaderStyle BackColor=#BB FontBold=True ForeColor=White />
<PagerSettings FirstPageImageUrl=~/Images/Arrow_Firstpng
LastPageImageUrl=~/Images/Arrow_Endpng Mode=NumericFirstLast
NextPageImageUrl=~/Images/Arrow_Nextpng PageButtonCount=
Position=TopAndBottom PreviousPageImageUrl=~/Images/Arrow_Backpng />
<PagerStyle BackColor=#FFDE ForeColor=Black HorizontalAlign=Right />
<RowStyle BackColor=#FFDE />
<SelectedRowStyle BackColor=#CEDA FontBold=True />
</asp:GridView>
</div>
<asp:ObjectDataSource ID=ObjectDataSource runat=server OldValuesParameterFormatString=original_{}
onselecting=ObjectDataSource_Selecting CacheDuration= EnableCaching=True>
</asp:ObjectDataSource>
<div >
<asp:Button ID=btnToExcel runat=server class=clsbtn Text=汇出Excel
onclick=btnToExcel_Click />
</div>
</div>
<script type=text/javascript>
$(document)ready(function () {
$unblockUI()
})
</script>
</form>
</body>
后端程式如下 protected void Page_Load(object sender EventArgs e)
{
if (!IsPostBack)
{
QDDLReportItemsAdd(A QueryData)
QDDLReportItemsAdd(B QueryData)
QDDLReportItemsAdd(C QueryData)
QtxtsDateText = DateTimeNowYearToString() + //;
QtxteDateText = DateTimeNowToShortDateString()
}
else
{
//不同的报表有不同的SelectMethod
if (QDDLReportSelectedValue == A Data)
{
ObjectDataSourceSelectMethod = GetAQueryData;
ObjectDataSourceTypeName = QueryDataBLL;
}
else if (QDDLReportSelectedValue == B Data)
{
ObjectDataSourceSelectMethod = GetBQueryData;
ObjectDataSourceTypeName = QueryDataBLL;
}
else if (QDDLReportSelectedValue == C Data)
{
ObjectDataSourceSelectMethod = GetCQueryData;
ObjectDataSourceTypeName = QueryDataBLL;
}
}
}
protected void ObjectDataSource_Selected(object sender ObjectDataSourceStatusEventArgs e)
{
SystemDataDataTable dt = eReturnValue as SystemDataDataTable;
if (dt == null || dtRowsCount == )
div_countInnerHtml = stringFormat( 查无资料! )
else
div_countInnerHtml = stringFormat( 共 <span style=color:red;fontsize:pt;><b>{}</b></span> 笔资料 dtRowsCount)
}
protected void btnToExcel_Click(object sender EventArgs e)
{
if (gvListRowsCount == )
return;
ResponseClear()
ResponseAddHeader(contentdisposition attachment;filename=ExportDataxls)
ResponseContentType = application/vndxls;
SystemIOStringWriter sw = new SystemIOStringWriter()
SystemWebUIHtmlTextWriter htw = new HtmlTextWriter(sw)
//关闭换页跟排序
gvListAllowSorting = false;
gvListAllowPaging = false;
gvListDataBind()
HtmlForm hf = new HtmlForm()
ControlsAdd(hf)
hfControlsAdd(gvList)
hfRenderControl(htw)
ResponseWrite(swToString())
ResponseEnd()
}
protected void ObjectDataSource_Selecting(object sender ObjectDataSourceSelectingEventArgs e)
{
//首次进入页面不Query
if (!IsPostBack)
eCancel = true;
}
protected void btnQuery_Click(object sender EventArgs e)
{
QueryDataBLL bll = new QueryDataBLL()
ObjectDataSourceSelectParametersClear()
if (QDDLReportSelectedValue == A Data)
{
thiscreateGVColumns(bllGetAQueryDataSchema())
//依Query的需求设定Parameter
Parameter para = new Parameter(sdate)
paraDefaultValue = (QtxtsDateTextTrim() == ? // : QtxtsDateTextTrim())
ObjectDataSourceSelectParametersAdd(para)
Parameter para = new Parameter(edate)
paraDefaultValue = (QtxteDateTextTrim() == ? // : QtxteDateTextTrim())
ObjectDataSourceSelectParametersAdd(para)
}
else if (QDDLReportSelectedValue == B Data)
{
thiscreateGVColumns(bllGetBQueryDataSchema())
//依Query的需求设定Parameter
// 略
}
else if (QDDLReportSelectedValue == C Data)
{
thiscreateGVColumns(bllGetCQueryDataSchema())
//依Query的需求设定Parameter
// 略
}
thisDataBind()
}
protected void gvList_PageIndexChanging(object sender GridViewPageEventArgs e)
{
ObjectDataSourceCacheDuration = ;
}
private void createGVColumns(SystemDataDataTable dt)
{
//依不同的查询结果设定gridview栏位
gvListColumnsClear()
for (int i = ; i < dtColumnsCount; i++)
{
BoundField bf = new BoundField()
bfDataField = dtColumns[i]ColumnNameToString()
bfHeaderText = dtColumns[i]ColumnNameToString()
gvListColumnsAdd(bf)
}
}
QueryDataBLL 的 GetAQueryData 与 GetAQueryDataSchema 都是回传 Datatable且 sql command 一样只差在 GetAQueryDataSchema 的 sql command where 条件只下 where = 用来取回栏位资讯…