zoukankan      html  css  js  c++  java
  • 自定义DataControlField,简化开发

        作Asp.net的开发的都知道,从DataGrid到GridView,都支持Template Column,功能是在太强了,可以说没有做不到,只有想不到!可是如果功能强大了必然意味着用起来麻烦,可是大多数的时候,BoundField都是不能满足要求的,你会说用TemplateField啊,没错,用模板列确实可以轻易的解决问题,可是你看下面代码:

    <Columns>
                        
    <asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />
                        
    <asp:BoundField DataField="DataId" HeaderText="DataId" ReadOnly="True" SortExpression="DataId"
                            Visible
    ="False" InsertVisible="False" />
                        
    <asp:TemplateField HeaderText="编码" SortExpression="ClientId">
                            
    <edititemtemplate>
    <asp:TextBox runat="server" Text='<%# Bind("ClientId") %>'  MaxLength="4" columns="4" onfocus="this.select();"  id="TextBox1"></asp:TextBox>
    </edititemtemplate>
                            
    <itemtemplate>
    <asp:Label runat="server" Text='<%# Bind("ClientId") %>' id="Label1"></asp:Label>
    </itemtemplate>
                        
    </asp:TemplateField>
                        
    <asp:TemplateField HeaderText="说明" SortExpression="ClientName">
                            
    <edititemtemplate>
    <asp:TextBox runat="server" Text='<%# Bind("ClientName") %>'  MaxLength="20" columns="20" id="TextBox2"></asp:TextBox>
    </edititemtemplate>
                            
    <itemtemplate>
    <asp:Label runat="server" Text='<%# Bind("ClientName") %>'  id="Label2"></asp:Label>
    </itemtemplate>
                        
    </asp:TemplateField>
                    
    </Columns>

    这只是为了实现限制输入宽度〔否则默认用BoundField在编辑状态下,是在是太宽了,破坏了界面的布局〕,就使用了模板列。这还只是一个简单的表的编辑,只有3个字段,如果是一个几十个字段的表,包含各种类型的字段输入,要编辑起来还真是麻烦,而且有很多重复性的工作,这简直就是简单枯燥的体力劳动!
        穷则思变,经过参考一些资料,我把一些常用的字段类型封装成了自定义的DataField,然后直接在GridView中使用,您还别说,2005的代码提示还真不是盖的,对自定义的DataField的支持非常的好(只有一个缺点:不能使用Columns的那个设计界面了,只能改标记代码),您在看看下面这段:

    <columns>
        
    <yh:TextField DataField="DataId" HeaderText="DataId" InsertVisible="False" ReadOnly="True"    SortExpression="DataId" Visible="False" />
        
    <yh:DictionaryField HeaderText="分公司" DataField="SaleCoId" SortExpression="SaleCoId" Tables="td_saleco" ValueFields="salecoid" DisplayFields="SaleCoName"/>
        
    <yh:DateTimeField HeaderText="发货日期" DataField="SendDate" SortExpression="SendDate" ReadOnly="True"  ShowTime="False" UseLongFormat="True" />
        
    <yh:NumericField HeaderText="Fc" DataField="TestFC" SortExpression="TestFC" InsertVisible="False" Visible="False"/>
        
    <yh:DictionaryField HeaderText="客户" DataField="CustomerId" SortExpression="CustomerId" ValueFields="CustomerId" DisplayFields="CustomerName" Tables="Td_Customer"/>
        
    <yh:StateField HeaderText="是否内销" DataField="InteriorFlag" SortExpression="InteriorFlag" KeyValuePairs="0:外销,1:内销" />
    </columns>

    怎么样,是不是觉得清爽了很多!
    至于怎么样实现,这可是我公司的版权不能外传! 对了,请你参考这段文章Custom Data Control Fields,人家比我说得清楚多了,我就是从那学来的:)

  • 相关阅读:
    VMware 克隆一个虚拟机(win7)
    HDU 5695 Gym Class (拓扑排序、贪心、优先队列)
    HDU2647 Reward (拓扑排序、反向建图)
    HDU 3342 Legal or Not (拓扑排序、有向图是否存在环)
    Vue框架简介及简单使用
    Linux文件常用指令
    Linux系统相关命令
    Linux关机指令详解
    linux目录结构
    Linux用户相关命令
  • 原文地址:https://www.cnblogs.com/dajianshi/p/436478.html
Copyright © 2011-2022 走看看