展开全部
如果没有设置任何数据源属性,则GridView控件不会生成任何东西。如果绑定了一个空的数据源并且规定了EmptyDataTemplate模板,则向用户显示的结果有一个较友好的外观: <asp:gridview runat="server" datasourceid="MySource"> <emptydatatemplate> <asp:label runat="server"> There's no data to show in this view. </asp:label> </emptydatatemplate> </asp:gridview> 如果该控件所绑定的数据源不空,则忽略EmptyDataTemplate属性。 如果使用一个已声明的列集合,则网格的AutoGenerateColumns属性通常设置为false。然而,这不是一个严格的要求——网格可以声明的列和自动生成的列。在这种情况下,声明的列先显示。还要注意自动生成的列不是添加到Columns集合。因此,使用列自动生成时,Columns集合通常是空的。 1. 对列进行配置 Columns属性是一个DataControlField对象集合。DataControlField对象类似于DataGrid的DataGridColumn对象,但是它有一个更一般的名称,因为这些字段对象可以在其他不必生成列的数据绑定控件中重用。(例如,在DetailsView控件中,相同的类用来生成一行。) 我们既可以以声明的方式定义列,也可以以编程方式声明列。如果以编程的方式声明列,则只要实例化任何必需的数据字段对象,并把它们添加到Columns集合。如下代码把一个数据绑定的列添加到网格中: BoundField field = new BoundField(); field.DataField = "companyname"; field.HeaderText = "Company Name"; grid.ColumnFields.Add(field); 各列数据按列字段在集合众出现的顺序进行显示。要在.aspx源文件中静态地声明列,则使用<Columns>标签,如下面所示: <columns> <asp:boundfield datafield="customerid" headertext="ID" /> <asp:boundfield datafield="companyname" headertext="Company Name" /> </columns> 2. 绑定字段 BoundField类表示在一个数据绑定控件(诸如GridView或DetailsView)中作为纯文本显示的一个字段。为了规定要显示的字段,把DataField属性设置为该字段的名称。通过设置DataFormatString属性,可以应用一个定制的格式化字符串于所显示的值。如果NullDisplayText属性的值为null,则允许我们规定要显示的交替文本。最后,通过把ConvertEmptyStringToNull属性设置为true,强制该类把空字符串看作null值。 BoundField可以通过Visible属性以编程的方式隐藏起来,而ReadOnly属性防止所显示的值在编辑模式被修改。要在头部或页脚部分显示一个标题,请分别设置HeaderText和FooterText属性。我们还可以选择在头部显示一个图像,而不是文本,这时要设置HeaderImageUrl属性。 3. 按钮字段 按钮字段适合于把一个可单击的元素放入一个网格的列中。通常使用一个按钮字段触发针对当前行的一个操作。按钮字段表示我们希望通过一个服务器端事件处理的任何操作。当该按钮被单击时,页面回发并激发一个RowCommand事件。 4. 超链接字段 超链接列把用户指向一个不同的URL,该URL可以有选择地在一个内部框架中显示出来。该链接的文本和URL可以从所绑定的数据源中获得。特别是,URL可以按以下两种方法之一进行设置:通过直接绑定到一个数据源字段,或通过使用一个硬编码的带有定制查询字符串的URL。如果URL存储在数据源的一个字段字段中,则选择直接绑定。在这种情况下,把DataNavigateUrlFields属性设置为该列的名称。然而,在某些情况下,要访问的URL与特定的应用程序有关,并不是存储在数据源中。在这种情况下,可以用一个硬编码的URL和查询字符串中的一个参数数组设置DataNavigateUrlFormatString属性: <asp:HyperLinkField DataTextField="productname" HeaderText="Product" DataNavigateUrlFields="productid" DataNavigateUrlFormatString="productinfo.aspx?id={0}" Target="ProductView" /> 当用户单击该按钮时,浏览器用productinfo.aspx?id=xxx URL的内容填充规定的框架窗口,其中xxx取自productid字段。该URL可以包含多个参数。要包含多个数据绑定值,只要把DataNavigateUrlFields属性设置为一个逗号隔开的字段名列表。该行为扩展了DataGrid的超链接列的行为,因为它支持多个参数。 超链接的文本也可以进行格式化。DataTextFormatString属性可以包含任何有效的标记,并使用{0}占位符保留数据绑定值的位置。 5. CheckBox字段 我们迄今所考虑的列类型对于经验丰富的ASP.NET 1.x开发人员来讲并不觉得新奇。虽然被重命名了,但是它们的总体行为仍然非常类似于DataGrids的类似列类型的行为。另一方面,CheckBoxField类型是在ASP.NET 2.0中是一个新类型,并且只适用于GridView和其他视图控件。在ASP.NET 1.x中获得一个复选框的最简单的方法是通过模板(一般是针对DataGrids)。 CheckBoxField列是显示一个复选框的一个较简单的绑定列。我们可以只把它绑定到一个包含布尔值的数据字段。有效的布尔值取自一个SQL Server表中的一个Bit类型(和其他数据库中的类似类型)的列,如果该控件绑定到一个定制集合,则取自一个bool类型的属性。特别是,如果把一个CheckBoxField列绑定到一个整数属性,则会得到一个异常,从而隐式地假设0为false,非0为true。 6. 图像字段 ImageField列类型表示一个在数据绑定控件中作为图像显示的字段。该单元包含一个<img>元素,因此底层的字段必须引用一个有效的URL。然而,我们可以任意组合URL。例如,我们可以使用DataImageUrlField执行直接绑定,其中该字段的内容填充<img>标签的Src属性。另外,我们可以使该列的单元指向一个外部页面(或者HTTP处理程序),从任何来源获取该图像的字节,并把它们下传给浏览器。如下代码说明了这种方法: <Columns> <asp:ImageField DataImageUrlField="employeeid" DataImageUrlFormatString="showemployeepicture.aspx?id={0}" DataAlternateTextField="lastname"> <ControlStyle Width="120px" /> </asp:ImageField> <asp:TemplateField headertext="Employee"> <ItemStyle Width="220px" /> <ItemTemplate> <b><%# Eval("titleofcourtesy") + " " + Eval("lastname") + ", " + Eval("firstname") %></b> <br /> <%# Eval("title")%> <hr /> <i><%# Eval("notes")%></i> </ItemTemplate> </asp:templatefield> </Columns> ImageField列中的单元用下一个URL的输出进行填充: ShowEmployeePicture.aspx?id=xxx 不用说,xxx是employeeid字段中与DataImageUrlField关联的值。有趣的是,替代文本也可以是数据绑定的。我们对替代文本使用DataAlternateTextField属性。
展开全部
前提是你数据库存图片的路径了么?如果没有你就再加一列图片字段,专门存放相对图片路径的!接着 在GrideView编辑列添加一个叫ImageField的列,然后设置里面一个叫DataImageUrlField的属性,里面填写你数据库存的图片路径的字段名,这样就搞定了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<dl class=code><dt>C# code</dt><dd><pre> <!-- Code highlighting produced by Actipro CodeHighlighter (freeware) www CodeHighlighter.com/ --> 可以写一个方法来调用 public string cutString(string txt, int len) { if (txt.Length > len) { return txt.Substring(0, len); } else { return txt; } } 也可以直接在数据库里面进行操作 select case when len(field)>10 then left(field,10)+... else field end as news_name,news_id from tablename </pre></dd></dl> Eval("title").ToString().Substring(0,12) <ItemTemplate> <%# gettitle(Eval("productname"))%> </ItemTemplate> 后台写个函数截取字符12个 如果用方便调用的话,必须是protected或者public才能访问. 1 楼的方法可以,2楼的不行,如果长度达不到12个字符,那就会报错。 你用1 楼的判断一下就可以。 非常感谢,结帖给分!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
GridView 的数据肯定是要绑定的.. 用<asp:ImageField> 或用 模板+<img> 然后在page_load里绑定
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<asp:Image ID="Image1" runat="server" Width="90px" Height="60px" ImageUrl='<%#"~/images/"+ DataBinder.Eval(Container.DataItem,"image") %>' ></asp:Image> 我就是在GridView里绑定的。这个绑定到 <ItemTemplate>模板
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询