EPMSGridView控件的使用
首先,区别与微软的GridView, EPMSGridView控件主要内容分为两大块:页面绑定列(ext:EPMSGridView)和数据源(ext:EPMSSqlDataSource)
l ext:EPMSGridView
<ext:EPMSGridView
runat="server"
ID="gvTD"
DataSourceID="sdsTD" <!---------------对应的数据源--------------->
AllowPaging="True"
AllowSorting="false"
PageSize = "30" <!-------------页面每页显示的行数------------->
AutoGenerateColumns="False"
Width="100%" <!---------------列表宽度------------------->
OnRowCreated="gvTD_RowCreated" <!---------表头格式处理函数--------------->
DataKeyNames="Year,WeekNum,ProjID">
<Columns>
<asp:TemplateField HeaderText="室外宏基站#总站数">
<headerstyle wrap="false" />
<ItemStyle HorizontalAlign="Right" />
<edititemtemplate>
<asp:TextBox runat="server" reg="int+0" check lt="32767" maxlength="5"
extraMsg="室外宏基站总站数"
Text='<%# Bind("OuterTotalStationNum") %>'
id="txtOuterTotalStationNum">
</asp:TextBox>
</edititemtemplate>
<itemtemplate>
<asp:Label runat="server" Text='<%# Bind("OuterTotalStationNum") %>'></asp:Label>
</itemtemplate>
</asp:TemplateField>
<asp:BoundField DataField="CompanyName" HeaderText="市公司#市公司" ReadOnly="true" >
<headerstyle wrap="false" />
<itemstyle wrap="False" />
</asp:BoundField>
</columns>
</ext:EPMSGridView>
上面提供了两种绑定数据的方法:asp:BoundField 和asp:TemplateField ,而EPMSGridView 提供了以下方法来绑定数据源中的数据: ,如果页面列表没有编辑功能,则可以通过BoundField来绑定数据库的数据,如果需要在页面上编辑修改数据库中的数据,则一般采用TemplateField的方法(上述代码中的红色部分为编辑时的一些校验信息)(如 表示>=0 <=32767最大长度不可以超过5位数的整形数据)。
l ext:EPMSSqlDataSource
下面就用一个实例来讲解在使用EPMSSqlDataSource需要主要的问题。
<ext:EPMSSqlDataSource
ID="sdsTD"
runat="server"
CancelSelectOnNullParameter="False"
ConnectionString="<%$ ConnectionStrings:Report %>"
<!---------------连接到数据库:report(web.config中配置-------------->
EnablePaging="True" <!---------------是否分页显示,默认为10行一列--------------->
MaximumRowsParameterName="maximumRows"
SelectCommand="SELECT td.[Year],td.WeekNum,td.Projid,pp.Name as tdppname,
…….
where @SearchCondition@"
SelectCountQuery="SELECT count(*) ……… where @SearchCondition@"
UpdateCommand="UPDATE TDProjectWeekReport
……………
WHERE [Year] = @Year AND WeekNum = @WeekNum AND ProjID = @ProjID"
SortParameterISNullColumnName="SortOrder"
StartRowIndexParameterName="startRowIndex" >
<Patterns>
<ext:SearchGroup DefaultCondition="1=1" Name="SearchCondition">
<ext:SearchPattern Name="_Year" Pattern="td.[Year] = '{0}'" />
<ext:SearchPattern Name="_Week" Pattern="td.WeekNum = '{0}'" />
<ext:SearchPattern Name="CompanyID" Pattern="td.CompanyID = '{0}'" />
<ext:SearchPattern Name="PProjID" Pattern="td.PProjID = '{0}'" ReplaceQuote="false" />
</ext:SearchGroup>
</Patterns>
<SelectParameters>
<asp:ControlParameter ControlID="idYear" Name="_Year" PropertyName="SelectedValue" />
<asp:ControlParameter ControlID="idWeek" Name="_Week" PropertyName="SelectedValue" />
<asp:ControlParameter ControlID="ddlCompany" Name="CompanyID" PropertyName="SelectedValue" />
<asp:ControlParameter ControlID="ddlName" Name="PProjID" PropertyName="SelectedValue" />
</SelectParameters>
</ext:EPMSSqlDataSource>
注意:
第一:在数据源中,主要是数据参数Patterns,即@SearchCondition@就是通过它的参数通过“and”将SearchPattern中的Pattern连接起来。而@SearchCondition@的默认值是
“SearchGroup DefaultCondition="1=1" Name="SearchCondition"”;
而SearchPattern Name="_Year" Pattern="td.[Year] = '{0}'"中的_Year则是
ControlParameter ControlID="idYear" Name="_Year" PropertyName="SelectedValue"获得,即_Year的值是控件idYear对应的值。
第二:SortParameterISNullColumnName="SortOrder"是表示数据源的排序参数是SortOrder,这个排序的作用是在分页中需要使用到。