问题一:如果GridVIew的每一列都使用“TextBox”,那么应该怎样绑定数据源,才能使字段中的值显示在“TextBox”中???问题二:如果GridVIew中的某一列,数据源中没有该字段或是该字段为“null”,那么该列的值显示“无”,而不是抛出异常。而且值是显示在“TextBox”中的。请问这样的功能应该怎样实现???

解决方案 »

  1.   

    用模板实现
    http://wenku.baidu.com/view/0d777b0316fc700abb68fc4a.html
    这里有各种你需要的样式!
      

  2.   

    这段代码可以作为参考<asp:GridView ID="gdvAppInfo" runat="server" AutoGenerateColumns="False" 
                    style="margin-right: 0px" Width="100%" AllowPaging="True" 
                    onpageindexchanging="gdvTeacherInfo_PageIndexChanging" PageSize="25" 
                    BorderStyle="None" Font-Size="Small" >
                    <Columns>
                        <asp:HyperLinkField DataNavigateUrlFields="hno" 
                            DataNavigateUrlFormatString="applayDetail.aspx?mail={0}" DataTextField="hname" 
                            HeaderText="联系人" Target="_blank" >
                            <HeaderStyle ForeColor="#FF7300" Height="25px" />
                            <ItemStyle Height="30px" />
                        </asp:HyperLinkField>
                        <asp:TemplateField HeaderText="方向">
                            <ItemTemplate>
                                <asp:HyperLink ID="hlnkHmajor" runat="server" Text='<%# Eval("hmajor") %>'></asp:HyperLink>
                            </ItemTemplate>
                            <HeaderStyle ForeColor="#FF7300" Height="25px" />
                            <ItemStyle Height="30px" />
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="地址">
                            <ItemTemplate>
                                <asp:Label ID="lblAddr" runat="server" Text='<%# Eval("hadd") %>'></asp:Label>
                            </ItemTemplate>
                            <HeaderStyle ForeColor="#FF7300" />
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="发布日期">
                            <ItemTemplate>
                                <asp:Label ID="lblTime" runat="server" Text='<%# Eval("hTime") %>'></asp:Label>
                            </ItemTemplate>
                            <HeaderStyle ForeColor="#FF7300" />
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="待遇">
                            <ItemTemplate>
                                <asp:Label ID="lblpay" runat="server" Text='<%# Eval("hpay") %>'></asp:Label>
                            </ItemTemplate>
                            <HeaderStyle ForeColor="#FF7300" />
                        </asp:TemplateField>
                        
                    </Columns>
                    <HeaderStyle CssClass="gdvTop" />
                </asp:GridView>
      

  3.   

    第一个问题参考#2的示例即可。
    第二个问题,如果是null想显示为无,在数据库中isnull(列名,'无') as 列名 即可。
    如果没有这个字段,页面上就不要写固定的列名,可以从后台动态添加。
      

  4.   

    扩充DataTale,使查询出来的结果集保持一致,但是值可以为空。查询时直接:
    select HS_GRXX_BZ.XM,HS_GRXX_BZ.SFZ,HS_GZ.GZMC,'' as KHR,'无' as Yi,'无' as Er,'无' as San,'无' as Si,'无' as Wu,'无' as Liu,'无' as Qi,'无' as Ba,'无' as Jiu,'无' as Shi,'无' as ShiYi,'无' as ShiEr,'无' as PJF,'无' as DF,'无' as BZ from HS_GRXX_BZ LEFT OUTER JOIN HS_GZ ON HS_GRXX_BZ.GWDM=HS_GZ.GZDM where KHLB='总/副经理'